diff --git a/cmake/CeresConfig.cmake.in b/cmake/CeresConfig.cmake.in
index ced7daf..94099a9 100644
--- a/cmake/CeresConfig.cmake.in
+++ b/cmake/CeresConfig.cmake.in
@@ -91,6 +91,18 @@
   return()
 endmacro(CERES_REPORT_NOT_FOUND)
 
+
+# ceres_message([mode] "message text")
+#
+# Wraps the standard cmake 'message' command, but suppresses output
+# if the QUIET flag was passed to the find_package(Ceres ...) call.
+function(ceres_message)
+  if (NOT Ceres_FIND_QUIETLY)
+    message(${ARGN})
+  endif()
+endfunction()
+
+
 # ceres_pretty_print_cmake_list( OUTPUT_VAR [item1 [item2 ... ]] )
 #
 # Sets ${OUTPUT_VAR} in the caller's scope to a human-readable string
@@ -185,7 +197,7 @@
       "Wikipedia article http://en.wikipedia.org/wiki/One_Definition_Rule "
       "for more details")
   endif ()
-  message(STATUS "Found required Ceres dependency: "
+  ceres_message(STATUS "Found required Ceres dependency: "
     "Eigen version ${CERES_EIGEN_VERSION} in ${EIGEN3_INCLUDE_DIRS}")
 else (EIGEN3_FOUND)
   ceres_report_not_found("Missing required Ceres "
@@ -201,7 +213,7 @@
 if (CERES_USES_MINIGLOG)
   # Output message at standard log level (not the lower STATUS) so that
   # the message is output in GUI during configuration to warn user.
-  message("-- Found Ceres compiled with miniglog substitute "
+  ceres_message("-- Found Ceres compiled with miniglog substitute "
     "for glog, beware this will likely cause problems if glog is later linked.")
 else(CERES_USES_MINIGLOG)
   # As imported CMake targets are not re-exported when a dependent target is
@@ -224,7 +236,7 @@
   # Search quietly s/t we control the timing of the error message if not found.
   find_package(Glog QUIET)
   if (GLOG_FOUND)
-    message(STATUS "Found required Ceres dependency: glog")
+    ceres_message(STATUS "Found required Ceres dependency: glog")
   else()
     ceres_report_not_found("Missing required Ceres "
       "dependency: glog. Searched using GLOG_INCLUDE_DIR_HINTS: "
@@ -237,7 +249,7 @@
     # Search quietly s/t we control the timing of the error message if not found.
     find_package(gflags ${CERES_GFLAGS_VERSION} CONFIG QUIET)
     if (gflags_FOUND)
-      message(STATUS "Found required Ceres dependency: gflags")
+      ceres_message(STATUS "Found required Ceres dependency: gflags")
     else()
       ceres_report_not_found("Missing required Ceres "
         "dependency: gflags.")
@@ -301,7 +313,7 @@
 
 # As we use CERES_REPORT_NOT_FOUND() to abort, if we reach this point we have
 # found Ceres and all required dependencies.
-message(STATUS "Found " ${CERES_DETECTED_VERSION_STRING})
+ceres_message(STATUS "Found " ${CERES_DETECTED_VERSION_STRING})
 
 # Set CERES_FOUND to be equivalent to Ceres_FOUND, which is set to
 # TRUE by FindPackage() if this file is found and run, and after which
diff --git a/cmake/FindGlog.cmake b/cmake/FindGlog.cmake
index 4fc84da..1a7b6c0 100644
--- a/cmake/FindGlog.cmake
+++ b/cmake/FindGlog.cmake
@@ -109,6 +109,16 @@
   return()
 endmacro(GLOG_REPORT_NOT_FOUND)
 
+# glog_message([mode] "message text")
+#
+# Wraps the standard cmake 'message' command, but suppresses output
+# if the QUIET flag was passed to the find_package(Glog ...) call.
+function(GLOG_MESSAGE)
+  if (NOT Glog_FIND_QUIETLY)
+    message(${ARGN})
+  endif()
+endfunction()
+
 # Protect against any alternative find_package scripts for this library having
 # been called previously (in a client project) which set GLOG_FOUND, but not
 # the other variables we require / set here which could cause the search logic
@@ -123,8 +133,8 @@
 if (NOT DEFINED GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION
     AND NOT GLOG_INCLUDE_DIR_HINTS
     AND NOT GLOG_LIBRARY_DIR_HINTS)
-  message(STATUS "No preference for use of exported glog CMake configuration "
-    "set, and no hints for include/library directories provided. "
+  glog_message(STATUS "No preference for use of exported glog CMake "
+    "configuration set, and no hints for include/library directories provided. "
     "Defaulting to preferring an installed/exported glog CMake configuration "
     "if available.")
   set(GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION TRUE)
@@ -144,7 +154,7 @@
     execute_process(COMMAND ${HOMEBREW_EXECUTABLE} --prefix
       OUTPUT_VARIABLE HOMEBREW_INSTALL_PREFIX
       OUTPUT_STRIP_TRAILING_WHITESPACE)
-    message(STATUS "Detected Homebrew with install prefix: "
+    glog_message(STATUS "Detected Homebrew with install prefix: "
       "${HOMEBREW_INSTALL_PREFIX}, adding to CMake search paths.")
     list(APPEND GLOG_INCLUDE_DIR_HINTS "${HOMEBREW_INSTALL_PREFIX}/include")
     list(APPEND GLOG_LIBRARY_DIR_HINTS "${HOMEBREW_INSTALL_PREFIX}/lib")
@@ -202,11 +212,11 @@
                     NO_CMAKE_PACKAGE_REGISTRY
                     NO_CMAKE_BUILDS_PATH)
   if (glog_FOUND)
-    message(STATUS "Found installed version of glog: ${glog_DIR}")
+    glog_message(STATUS "Found installed version of glog: ${glog_DIR}")
   else()
     # Failed to find an installed version of glog, repeat search allowing
     # exported build directories.
-    message(STATUS "Failed to find installed glog CMake configuration, "
+    glog_message(STATUS "Failed to find installed glog CMake configuration, "
       "searching for glog build directories exported with CMake.")
     # Again pass NO_CMAKE_BUILDS_PATH, as we know that glog is exported and
     # do not want to treat projects built with the CMake GUI preferentially.
@@ -215,21 +225,22 @@
                       NO_MODULE
                       NO_CMAKE_BUILDS_PATH)
     if (glog_FOUND)
-      message(STATUS "Found exported glog build directory: ${glog_DIR}")
+      glog_message(STATUS "Found exported glog build directory: ${glog_DIR}")
     endif(glog_FOUND)
   endif(glog_FOUND)
 
   set(FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION ${glog_FOUND})
 
   if (FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
-    message(STATUS "Detected glog version: ${glog_VERSION}")
+    glog_message(STATUS "Detected glog version: ${glog_VERSION}")
     set(GLOG_FOUND ${glog_FOUND})
     # glog wraps the include directories into the exported glog::glog target.
     set(GLOG_INCLUDE_DIR "")
     set(GLOG_LIBRARY glog::glog)
   else (FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
-    message(STATUS "Failed to find an installed/exported CMake configuration "
-      "for glog, will perform search for installed glog components.")
+    glog_message(STATUS "Failed to find an installed/exported CMake "
+      "configuration for glog, will perform search for installed glog "
+      "components.")
   endif (FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
 endif(GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION)
 
