1 macro(determine_gflags_namespace VARIABLE)
2 if (NOT DEFINED "${VARIABLE}")
3 if (CMAKE_REQUIRED_INCLUDES)
4 set (CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
6 set (CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS)
9 set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS})
11 set(_NAMESPACES gflags google)
14 #include <gflags/gflags.h>
16 int main(int argc, char**argv)
18 GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
21 if (NOT CMAKE_REQUIRED_QUIET)
22 message (STATUS "Looking for gflags namespace")
25 set (CMAKE_CXX_FLAGS_SAVE ${CMAKE_CXX_FLAGS})
26 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARGV2}")
30 ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/DetermineGflagsNamespace.cxx)
32 foreach (_namespace ${_NAMESPACES})
33 file (WRITE "${_check_file}" "${_check_code}")
34 try_compile (${VARIABLE}
35 "${CMAKE_BINARY_DIR}" "${_check_file}"
36 COMPILE_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}" -DGFLAGS_NAMESPACE=${_namespace}
37 LINK_LIBRARIES "${gflags_LIBRARIES}"
38 CMAKE_FLAGS -DINCLUDE_DIRECTORIES:STRING="${gflags_INCLUDE_DIR}"
39 OUTPUT_VARIABLE OUTPUT)
42 set (${VARIABLE} ${_namespace} CACHE INTERNAL "gflags namespace" FORCE)
45 file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
46 "Determining the gflags namespace ${_namespace} failed with the following output:\n"
49 endforeach (_namespace)
52 set (CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_SAVE})
56 if (NOT CMAKE_REQUIRED_QUIET)
57 message (STATUS "Looking for gflags namespace - ${${VARIABLE}}")
59 file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
60 "Determining the gflags namespace passed with the following output:\n"
63 if (NOT CMAKE_REQUIRED_QUIET)
64 message (STATUS "Looking for gflags namespace - failed")
66 set (${VARIABLE} ${_namespace} CACHE INTERNAL "gflags namespace")