1 cmake_minimum_required (VERSION 3.0)
4 cmake_policy (SET CMP0042 NEW)
8 cmake_policy (SET CMP0063 NEW)
11 project(glog VERSION 0.3.5 LANGUAGES C CXX)
13 set (CPACK_PACKAGE_NAME glog)
14 set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "")
15 set (CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
16 set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
17 set (CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
18 set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
20 option (WITH_GFLAGS "Use gflags" ON)
21 option (WITH_THREADS "Enable multithreading support" ON)
22 option (WITH_TLS "Enable Thread Local Storage (TLS) support" ON)
24 list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
26 include (CheckCSourceCompiles)
27 include (CheckCXXCompilerFlag)
28 include (CheckCXXSourceCompiles)
29 include (CheckCXXSourceRuns)
30 include (CheckFunctionExists)
31 include (CheckIncludeFile)
32 include (CheckIncludeFileCXX)
33 include (CheckLibraryExists)
34 include (CheckStructHasMember)
35 include (CheckSymbolExists)
36 include (CheckTypeSize)
37 include (CMakePackageConfigHelpers)
38 include (CMakePushCheckState)
41 include (DetermineGflagsNamespace)
42 include (GNUInstallDirs)
44 set (CMAKE_DEBUG_POSTFIX d)
45 set (CMAKE_THREAD_PREFER_PTHREAD 1)
48 find_package (gflags 2.2.0)
51 set (HAVE_LIB_GFLAGS 1)
52 determine_gflags_namespace (gflags_NAMESPACE)
57 find_package (Threads)
60 check_include_file (dlfcn.h HAVE_DLFCN_H)
61 check_include_file (execinfo.h HAVE_EXECINFO_H)
62 check_include_file (glob.h HAVE_GLOB_H)
63 check_include_file (inttypes.h HAVE_INTTYPES_H)
64 check_include_file (libunwind.h HAVE_LIBUNWIND_H)
65 check_include_file (memory.h HAVE_MEMORY_H)
66 check_include_file (pwd.h HAVE_PWD_H)
67 check_include_file (stdint.h HAVE_STDINT_H)
68 check_include_file (stdlib.h HAVE_STDLIB_H)
69 check_include_file (string.h HAVE_STRING_H)
70 check_include_file (strings.h HAVE_STRINGS_H)
71 check_include_file (sys/stat.h HAVE_SYS_STAT_H)
72 check_include_file (sys/syscall.h HAVE_SYS_SYSCALL_H)
73 check_include_file (sys/time.h HAVE_SYS_TIME_H)
74 check_include_file (sys/types.h HAVE_SYS_TYPES_H)
75 check_include_file (sys/utsname.h HAVE_SYS_UTSNAME_H)
76 check_include_file (syscall.h HAVE_SYSCALL_H)
77 check_include_file (syslog.h HAVE_SYSLOG_H)
78 check_include_file (ucontext.h HAVE_UCONTEXT_H)
79 check_include_file (unistd.h HAVE_UNISTD_H)
80 check_include_file (unwind.h HAVE_UNWIND_H)
81 check_include_file (pwd.h HAVE_PWD_H)
83 check_include_file_cxx ("ext/hash_map" HAVE_EXT_HASH_MAP)
84 check_include_file_cxx ("ext/hash_set" HAVE_EXT_HASH_SET)
85 check_include_file_cxx ("ext/slist" HAVE_EXT_SLIST)
86 check_include_file_cxx ("tr1/unordered_map" HAVE_TR1_UNORDERED_MAP)
87 check_include_file_cxx ("tr1/unordered_set" HAVE_TR1_UNORDERED_SET)
88 check_include_file_cxx ("unordered_map" HAVE_UNORDERED_MAP)
89 check_include_file_cxx ("unordered_set" HAVE_UNORDERED_SET)
91 check_type_size ("unsigned __int16" HAVE___UINT16)
92 check_type_size (u_int16_t HAVE_U_INT16_T)
93 check_type_size (uint16_t HAVE_UINT16_T)
95 check_function_exists (dladdr HAVE_DLADDR)
96 check_function_exists (fcntl HAVE_FCNTL)
97 check_function_exists (pread HAVE_PREAD)
98 check_function_exists (pwrite HAVE_PWRITE)
99 check_function_exists (sigaction HAVE_SIGACTION)
100 check_function_exists (sigaltstack HAVE_SIGALSTACK)
102 # NOTE gcc does not fail if you pass a non-existent -Wno-* option as an
103 # argument. However, it will happily fail if you pass the corresponding -W*
104 # option. So, we check whether options that disable warnings exist by testing
105 # the availability of the corresponding option that enables the warning. This
106 # eliminates the need to check for compiler for several (mainly Clang) options.
108 check_cxx_compiler_flag (-Wdeprecated HAVE_NO_DEPRECATED)
109 check_cxx_compiler_flag (-Wunnamed-type-template-args
110 HAVE_NO_UNNAMED_TYPE_TEMPLATE_ARGS)
112 # NOTE: Cannot use check_function_exists here since >=vc-14.0 can define
113 # snprintf as an inline function
114 check_symbol_exists (snprintf stdio.h HAVE_SNPRINTF)
116 check_library_exists (unwind get_static_proc_name "" HAVE_LIB_UNWIND)
117 check_library_exists (DbgHelp UnDecorateSymbolName "" HAVE_DBGHELP)
119 find_library (UNWIND_LIBRARY NAMES unwind DOC "unwind library")
120 mark_as_advanced (UNWIND_LIBRARY)
122 check_c_source_compiles ("
124 static void foo(void) __attribute__ ((unused));
125 int main(void) { return 0; }
126 " HAVE___ATTRIBUTE__)
128 check_c_source_compiles ("
130 static void foo(void) __attribute__ ((visibility(\"default\")));
131 int main(void) { return 0; }
132 " HAVE___ATTRIBUTE__VISIBILITY_DEFAULT)
134 check_c_source_compiles ("
136 static void foo(void) __attribute__ ((visibility(\"hidden\")));
137 int main(void) { return 0; }
138 " HAVE___ATTRIBUTE__VISIBILITY_HIDDEN)
140 check_c_source_compiles ("
141 int main(void) { if (__builtin_expect(0, 0)) return 1; return 0; }
142 " HAVE___BUILTIN_EXPECT)
144 check_c_source_compiles ("
147 int a; if (__sync_val_compare_and_swap(&a, 0, 1)) return 1; return 0;
149 " HAVE___SYNC_VAL_COMPARE_AND_SWAP)
151 check_c_source_compiles ("
152 #define _XOPEN_SOURCE 500
157 pthread_rwlock_init(&l, NULL);
158 pthread_rwlock_rdlock(&l);
163 check_c_source_compiles ("
164 __declspec(selectany) int a;
165 int main(void) { return 0; }
168 check_cxx_source_compiles ("
170 vector<int> t; int main() { }
173 check_cxx_source_compiles ("
175 std::vector<int> t; int main() { }
178 check_cxx_source_compiles ("
180 std::ostream& operator<<(std::ostream&, struct s);
183 " HAVE_USING_OPERATOR)
185 check_cxx_source_compiles ("
186 namespace Outer { namespace Inner { int i = 0; }}
187 using namespace Outer::Inner;;
188 int main() { return i; }
191 check_cxx_source_compiles ("
196 check_cxx_source_compiles ("
197 __declspec(thread) int tls;
201 check_cxx_source_compiles ("
202 thread_local int tls;
207 # Cygwin does not support the thread attribute. Don't bother.
209 set (GLOG_THREAD_LOCAL_STORAGE "__thread")
210 elseif (HAVE_MSVC_TLS)
211 set (GLOG_THREAD_LOCAL_STORAGE "__declspec(thread)")
212 elseif (HAVE_CXX11_TLS)
213 set (GLOG_THREAD_LOCAL_STORAGE thread_local)
222 "uc_regs->gregs[PT_NIP]"
237 set (_PC_HEADERS ucontext.h signal.h)
239 if (HAVE_UCONTEXT_H AND NOT PC_FROM_UCONTEXT)
240 foreach (_PC_FIELD ${_PC_FIELDS})
241 foreach (_PC_HEADER ${_PC_HEADERS})
243 ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/uctfield.c)
244 file (WRITE ${_TMP} "
245 #define _GNU_SOURCE 1
246 #include <${_PC_HEADER}>
250 return u.${_PC_FIELD} == 0;
253 try_compile (HAVE_PC_FROM_UCONTEXT ${CMAKE_CURRENT_BINARY_DIR} ${_TMP}
254 COMPILE_DEFINITIONS _GNU_SOURCE=1)
256 if (HAVE_PC_FROM_UCONTEXT)
257 set (PC_FROM_UCONTEXT ${_PC_FIELD} CACHE)
258 endif (HAVE_PC_FROM_UCONTEXT)
259 endforeach (_PC_HEADER)
260 endforeach (_PC_FIELD)
261 endif (HAVE_UCONTEXT_H AND NOT PC_FROM_UCONTEXT)
263 if (STL_STD_NAMESPACE)
264 set (STL_NAMESPACE std)
265 else (STL_STD_NAMESPACE)
266 set (STL_NAMESPACE "")
267 endif (STL_STD_NAMESPACE)
269 set (GOOGLE_NAMESPACE google)
270 set (_START_GOOGLE_NAMESPACE_ "namespace ${GOOGLE_NAMESPACE} {")
271 set (_END_GOOGLE_NAMESPACE_ "}")
274 set (ac_cv_have___uint16 1)
276 set (ac_cv_have___uint16 0)
277 endif (HAVE___UINT16)
280 set (ac_cv_have_inttypes_h 1)
281 else (HAVE_INTTYPES_H)
282 set (ac_cv_have_inttypes_h 0)
283 endif (HAVE_INTTYPES_H)
286 set (ac_cv_have_libgflags 1)
287 else (HAVE_LIB_GFLAGS)
288 set (ac_cv_have_libgflags 0)
289 endif (HAVE_LIB_GFLAGS)
292 set (ac_cv_have_stdint_h 1)
294 set (ac_cv_have_stdint_h 0)
295 endif (HAVE_STDINT_H)
297 if (HAVE_SYS_TYPES_H)
298 set (ac_cv_have_systypes_h 1)
299 else (HAVE_SYS_TYPES_H)
300 set (ac_cv_have_systypes_h 0)
301 endif (HAVE_SYS_TYPES_H)
304 set (ac_cv_have_u_int16_t 1)
305 else (HAVE_U_INT16_T)
306 set (ac_cv_have_u_int16_t 0)
307 endif (HAVE_U_INT16_T)
310 set (ac_cv_have_uint16_t 1)
312 set (ac_cv_have_uint16_t 0)
313 endif (HAVE_UINT16_T)
316 set (ac_cv_have_unistd_h 1)
318 set (ac_cv_have_unistd_h 0)
319 endif (HAVE_UNISTD_H)
321 set (ac_google_namespace ${GOOGLE_NAMESPACE})
322 set (ac_google_end_namespace ${_END_GOOGLE_NAMESPACE_})
323 set (ac_google_start_namespace ${_START_GOOGLE_NAMESPACE_})
325 if (HAVE___ATTRIBUTE__)
326 set (ac_cv___attribute___noreturn "__attribute__((noreturn))")
327 set (ac_cv___attribute___noinline "__attribute__((noinline))")
328 elseif (HAVE___DECLSPEC)
329 set (ac_cv___attribute___noreturn "__declspec(noreturn)")
330 #set (ac_cv___attribute___noinline "__declspec(noinline)")
331 endif (HAVE___ATTRIBUTE__)
333 if (HAVE___BUILTIN_EXPECT)
334 set (ac_cv_have___builtin_expect 1)
335 else (HAVE___BUILTIN_EXPECT)
336 set (ac_cv_have___builtin_expect 0)
337 endif (HAVE___BUILTIN_EXPECT)
339 if (HAVE_USING_OPERATOR)
340 set (ac_cv_cxx_using_operator 1)
341 else (HAVE_USING_OPERATOR)
342 set (ac_cv_cxx_using_operator 0)
343 endif (HAVE_USING_OPERATOR)
346 set (HAVE_STACKTRACE 1)
347 endif (HAVE_EXECINFO_H)
350 cmake_push_check_state (RESET)
351 set (CMAKE_REQUIRED_LIBRARIES DbgHelp)
353 check_cxx_source_runs ([=[
362 HANDLE process = GetCurrentProcess();
364 if (!SymInitialize(process, NULL, TRUE))
367 char buf[sizeof(SYMBOL_INFO) + MAX_SYM_NAME];
368 SYMBOL_INFO *symbol = reinterpret_cast<SYMBOL_INFO *>(buf);
369 symbol->SizeOfStruct = sizeof(SYMBOL_INFO);
370 symbol->MaxNameLen = MAX_SYM_NAME;
372 void* const pc = reinterpret_cast<void*>(&foobar);
373 BOOL ret = SymFromAddr(process, reinterpret_cast<DWORD64>(pc), 0, symbol);
375 return ret ? EXIT_SUCCESS : EXIT_FAILURE;
379 cmake_pop_check_state ()
382 set (HAVE_STACKTRACE 1)
383 endif (HAVE_SYMBOLIZE)
384 elseif (UNIX OR (APPLE AND HAVE_DLADDR))
385 set (HAVE_SYMBOLIZE 1)
386 endif (WIN32 OR CYGWIN)
388 set (SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P})
390 if (WITH_THREADS AND Threads_FOUND)
391 if (CMAKE_USE_PTHREADS_INIT)
393 endif (CMAKE_USE_PTHREADS_INIT)
394 else (WITH_THREADS AND Threads_FOUND)
396 endif (WITH_THREADS AND Threads_FOUND)
398 set (TEST_SRC_DIR \"${CMAKE_CURRENT_SOURCE_DIR}\")
400 configure_file (src/config.h.cmake.in config.h)
401 configure_file (src/glog/logging.h.in glog/logging.h @ONLY)
402 configure_file (src/glog/raw_logging.h.in glog/raw_logging.h @ONLY)
403 configure_file (src/glog/stl_logging.h.in glog/stl_logging.h @ONLY)
404 configure_file (src/glog/vlog_is_on.h.in glog/vlog_is_on.h @ONLY)
406 set (CMAKE_CXX_VISIBILITY_PRESET default)
407 set (CMAKE_VISIBILITY_INLINES_HIDDEN 1)
410 ${CMAKE_CURRENT_BINARY_DIR}/glog/logging.h
411 ${CMAKE_CURRENT_BINARY_DIR}/glog/raw_logging.h
412 ${CMAKE_CURRENT_BINARY_DIR}/glog/stl_logging.h
413 ${CMAKE_CURRENT_BINARY_DIR}/glog/vlog_is_on.h
414 src/glog/log_severity.h
419 src/base/commandlineflags.h
420 src/base/googleinit.h
433 if (HAVE_PTHREAD OR WIN32)
434 list (APPEND GLOG_SRCS src/signalhandler.cc)
435 endif (HAVE_PTHREAD OR WIN32)
438 list (APPEND GLOG_SRCS
444 add_compile_options ($<$<BOOL:${HAVE_NO_UNNAMED_TYPE_TEMPLATE_ARGS}>:-Wno-unnamed-type-template-args>)
449 add_library(glog::glog ALIAS glog)
451 set_target_properties (glog PROPERTIES POSITION_INDEPENDENT_CODE ON)
454 target_link_libraries (glog PUBLIC ${UNWIND_LIBRARY})
455 endif (UNWIND_LIBRARY)
458 target_link_libraries (glog PUBLIC DbgHelp)
462 target_link_libraries (glog PUBLIC ${CMAKE_THREAD_LIBS_INIT})
465 if (WIN32 AND HAVE_SNPRINTF)
466 set_property (SOURCE src/windows/port.cc APPEND PROPERTY COMPILE_DEFINITIONS
468 endif (WIN32 AND HAVE_SNPRINTF)
471 target_link_libraries (glog PUBLIC gflags)
473 if (NOT BUILD_SHARED_LIBS)
474 # Don't use __declspec(dllexport|dllimport) if this is a static build
475 targeT_compile_definitions (glog PUBLIC GFLAGS_DLL_DECLARE_FLAG= GFLAGS_DLL_DEFINE_FLAG=)
476 endif (NOT BUILD_SHARED_LIBS)
479 set_target_properties (glog PROPERTIES VERSION ${PROJECT_VERSION})
480 set_target_properties (glog PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR})
483 target_compile_definitions (glog PUBLIC GLOG_NO_ABBREVIATED_SEVERITIES)
486 set_target_properties (glog PROPERTIES PUBLIC_HEADER "${GLOG_PUBLIC_H}")
488 set (_glog_CMake_BINDIR ${CMAKE_INSTALL_BINDIR})
489 set (_glog_CMake_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR})
490 set (_glog_CMake_LIBDIR ${CMAKE_INSTALL_LIBDIR})
491 set (_glog_CMake_INSTALLDIR ${_glog_CMake_LIBDIR}/cmake/glog)
493 target_include_directories (glog BEFORE PUBLIC
494 "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
495 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>"
496 "$<INSTALL_INTERFACE:${_glog_CMake_INCLUDE_DIR}>"
497 PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
498 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
501 target_include_directories (glog PUBLIC
502 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/windows>"
503 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/windows)
506 set_target_properties (glog PROPERTIES DEFINE_SYMBOL LIBGLOG_EXPORTS)
508 if (NOT BUILD_SHARED_LIBS)
509 target_compile_definitions (glog PUBLIC GOOGLE_GLOG_DLL_DECL=)
510 else (NOT BUILD_SHARED_LIBS)
511 target_compile_definitions (glog PRIVATE GOOGLE_GLOG_IS_A_DLL=1)
513 if (HAVE___ATTRIBUTE__VISIBILITY_DEFAULT)
514 set (_EXPORT "__attribute__((visibility(\"default\")))")
516 elseif (HAVE___DECLSPEC)
517 set (_EXPORT "__declspec(dllexport)")
518 set (_IMPORT "__declspec(dllimport)")
519 endif (HAVE___ATTRIBUTE__VISIBILITY_DEFAULT)
521 target_compile_definitions (glog PRIVATE
522 "GOOGLE_GLOG_DLL_DECL=${_EXPORT}")
523 target_compile_definitions (glog INTERFACE
524 "GOOGLE_GLOG_DLL_DECL=${_IMPORT}")
525 target_compile_definitions (glog INTERFACE
526 "GOOGLE_GLOG_DLL_DECL_FOR_UNITTESTS=${_IMPORT}")
527 endif (NOT BUILD_SHARED_LIBS)
532 add_executable (logging_unittest
533 src/logging_unittest.cc
536 target_link_libraries (logging_unittest PRIVATE glog)
538 add_executable (stl_logging_unittest
539 src/stl_logging_unittest.cc
542 target_link_libraries (stl_logging_unittest PRIVATE glog)
544 if (HAVE_NO_DEPRECATED)
545 set_property (TARGET stl_logging_unittest APPEND PROPERTY COMPILE_OPTIONS
547 endif (HAVE_NO_DEPRECATED)
549 if (HAVE_UNORDERED_MAP AND HAVE_UNORDERED_SET)
550 target_compile_definitions (stl_logging_unittest PRIVATE
551 GLOG_STL_LOGGING_FOR_UNORDERED)
552 endif (HAVE_UNORDERED_MAP AND HAVE_UNORDERED_SET)
554 if (HAVE_TR1_UNORDERED_MAP AND HAVE_TR1_UNORDERED_SET)
555 target_compile_definitions (stl_logging_unittest PRIVATE
556 GLOG_STL_LOGGING_FOR_TR1_UNORDERED)
557 endif (HAVE_TR1_UNORDERED_MAP AND HAVE_TR1_UNORDERED_SET)
559 if (HAVE_EXT_HASH_MAP AND HAVE_EXT_HASH_SET)
560 target_compile_definitions (stl_logging_unittest PRIVATE
561 GLOG_STL_LOGGING_FOR_EXT_HASH)
562 endif (HAVE_EXT_HASH_MAP AND HAVE_EXT_HASH_SET)
565 target_compile_definitions (stl_logging_unittest PRIVATE
566 GLOG_STL_LOGGING_FOR_EXT_SLIST)
567 endif (HAVE_EXT_SLIST)
570 add_executable (symbolize_unittest
571 src/symbolize_unittest.cc
574 target_link_libraries (symbolize_unittest PRIVATE glog)
575 endif (HAVE_SYMBOLIZE)
577 add_executable (demangle_unittest
578 src/demangle_unittest.cc
581 target_link_libraries (demangle_unittest PRIVATE glog)
584 add_executable (stacktrace_unittest
585 src/stacktrace_unittest.cc
588 target_link_libraries (stacktrace_unittest PRIVATE glog)
589 endif (HAVE_STACKTRACE)
591 add_executable (utilities_unittest
592 src/utilities_unittest.cc
595 target_link_libraries (utilities_unittest PRIVATE glog)
597 if (HAVE_STACKTRACE AND HAVE_SYMBOLIZE)
598 add_executable (signalhandler_unittest
599 src/signalhandler_unittest.cc
602 target_link_libraries (signalhandler_unittest PRIVATE glog)
603 endif (HAVE_STACKTRACE AND HAVE_SYMBOLIZE)
605 add_test (NAME demangle COMMAND demangle_unittest)
606 add_test (NAME logging COMMAND logging_unittest)
608 if (TARGET signalhandler_unittest)
609 add_test (NAME signalhandler COMMAND signalhandler_unittest)
610 endif (TARGET signalhandler_unittest)
612 if (TARGET stacktrace_unittest)
613 add_test (NAME stacktrace COMMAND stacktrace_unittest)
614 endif (TARGET stacktrace_unittest)
616 add_test (NAME stl_logging COMMAND stl_logging_unittest)
618 if (TARGET symbolize_unittest)
619 add_test (NAME symbolize COMMAND symbolize_unittest)
620 endif (TARGET symbolize_unittest)
621 endif (BUILD_TESTING)
623 install (TARGETS glog
625 RUNTIME DESTINATION ${_glog_CMake_BINDIR}
626 PUBLIC_HEADER DESTINATION ${_glog_CMake_INCLUDE_DIR}/glog
627 LIBRARY DESTINATION ${_glog_CMake_LIBDIR}
628 ARCHIVE DESTINATION ${_glog_CMake_LIBDIR})
630 set (glog_CMake_VERSION 3.0)
633 # Ensure clients locate only the package config and not third party find
634 # modules having the same name. This avoid cmake_policy PUSH/POP errors.
635 if (CMAKE_VERSION VERSION_LESS 3.9)
636 set (gflags_DEPENDENCY "find_dependency (gflags ${gflags_VERSION})")
637 else (CMAKE_VERSION VERSION_LESS 3.9)
638 # Passing additional find_package arguments to find_dependency is possible
639 # starting with CMake 3.9.
640 set (glog_CMake_VERSION 3.9)
641 set (gflags_DEPENDENCY "find_dependency (gflags ${gflags_VERSION} NO_MODULE)")
642 endif (CMAKE_VERSION VERSION_LESS 3.9)
645 configure_package_config_file (glog-config.cmake.in
646 ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake
647 INSTALL_DESTINATION ${_glog_CMake_INSTALLDIR}
648 NO_CHECK_REQUIRED_COMPONENTS_MACRO)
650 write_basic_package_version_file (glog-config-version.cmake VERSION
651 ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion)
653 export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake)
654 export (PACKAGE glog)
657 ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake
658 ${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake
659 DESTINATION ${_glog_CMake_INSTALLDIR})
661 install (EXPORT glog-targets NAMESPACE glog:: DESTINATION
662 ${_glog_CMake_INSTALLDIR})