added cmake support
[platform/upstream/glog.git] / CMakeLists.txt
1 cmake_minimum_required (VERSION 3.0)
2
3 if (POLICY CMP0042)
4   cmake_policy (SET CMP0042 NEW)
5 endif (POLICY CMP0042)
6
7 project (google-glog)
8
9 enable_testing ()
10
11 set (GLOG_MAJOR_VERSION 0)
12 set (GLOG_MINOR_VERSION 3)
13 set (GLOG_PATCH_VERSION 4)
14
15 set (GLOG_VERSION
16   ${GLOG_MAJOR_VERSION}.${GLOG_MINOR_VERSION}.${GLOG_PATCH_VERSION})
17
18 set (CPACK_PACKAGE_NAME glog)
19 set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "")
20 set (CPACK_PACKAGE_VERSION_MAJOR ${GLOG_MAJOR_VERSION})
21 set (CPACK_PACKAGE_VERSION_MINOR ${GLOG_MINOR_VERSION})
22 set (CPACK_PACKAGE_VERSION_PATCH ${GLOG_PATCH_VERSION})
23 set (CPACK_PACKAGE_VERSION ${GLOG_VERSION})
24
25 option (WITH_GFLAGS "Use gflags" ON)
26
27 include (CMakePackageConfigHelpers)
28 include (CPack)
29 include (CheckCSourceCompiles)
30 include (CheckCXXCompilerFlag)
31 include (CheckCXXSourceCompiles)
32 include (CheckFunctionExists)
33 include (CheckIncludeFile)
34 include (CheckIncludeFileCXX)
35 include (CheckLibraryExists)
36 include (CheckStructHasMember)
37 include (CheckSymbolExists)
38 include (CheckTypeSize)
39
40 set (CMAKE_THREAD_PREFER_PTHREAD 1)
41
42 if (WITH_GFLAGS)
43   find_package (gflags)
44
45   if (gflags_FOUND)
46     set (HAVE_LIB_GFLAGS 1)
47   endif (gflags_FOUND)
48 endif (WITH_GFLAGS)
49
50 find_package (Threads)
51
52 check_include_file (dlfcn.h HAVE_DLFCN_H)
53 check_include_file (execinfo.h HAVE_EXECINFO_H)
54 check_include_file (glob.h HAVE_GLOB_H)
55 check_include_file (inttypes.h HAVE_INTTYPES_H)
56 check_include_file (libunwind.h HAVE_LIBUNWIND_H)
57 check_include_file (memory.h HAVE_MEMORY_H)
58 check_include_file (pwd.h HAVE_PWD_H)
59 check_include_file (stdint.h HAVE_STDINT_H)
60 check_include_file (stdlib.h HAVE_STDLIB_H)
61 check_include_file (string.h HAVE_STRING_H)
62 check_include_file (strings.h HAVE_STRINGS_H)
63 check_include_file (sys/stat.h HAVE_SYS_STAT_H)
64 check_include_file (sys/syscall.h HAVE_SYS_SYSCALL_H)
65 check_include_file (sys/time.h HAVE_SYS_TIME_H)
66 check_include_file (sys/types.h HAVE_SYS_TYPES_H)
67 check_include_file (sys/utsname.h HAVE_SYS_UTSNAME_H)
68 check_include_file (syscall.h HAVE_SYSCALL_H)
69 check_include_file (syslog.h HAVE_SYSLOG_H)
70 check_include_file (ucontext.h HAVE_UCONTEXT_H)
71 check_include_file (unistd.h HAVE_UNISTD_H)
72 check_include_file (unwind.h HAVE_UNWIND_H)
73
74 check_include_file_cxx ("ext/hash_map" HAVE_EXT_HASH_MAP)
75 check_include_file_cxx ("ext/hash_set" HAVE_EXT_HASH_SET)
76 check_include_file_cxx ("ext/slist" HAVE_EXT_SLIST)
77 check_include_file_cxx ("tr1/unordered_map" HAVE_TR1_UNORDERED_MAP)
78 check_include_file_cxx ("tr1/unordered_set" HAVE_TR1_UNORDERED_SET)
79 check_include_file_cxx ("unordered_map" HAVE_UNORDERED_MAP)
80 check_include_file_cxx ("unordered_set" HAVE_UNORDERED_SET)
81
82 check_type_size ("unsigned __int16" HAVE___UINT16)
83 check_type_size (u_int16_t HAVE_U_INT16_T)
84 check_type_size (uint16_t HAVE_UINT16_T)
85
86 check_function_exists (dladdr HAVE_DLADDR)
87 check_function_exists (fcntl HAVE_FCNTL)
88 check_function_exists (pread HAVE_PREAD)
89 check_function_exists (pwrite HAVE_PWRITE)
90 check_function_exists (sigaction HAVE_SIGACTION)
91 check_function_exists (sigaltstack HAVE_SIGALSTACK)
92
93 check_cxx_compiler_flag (-Wno-deprecated HAVE_NO_DEPRECATED)
94
95 # NOTE: Cannot use check_function_exists here since >=vc-14.0 can define
96 # snprintf as an inline function
97 check_symbol_exists (snprintf stdio.h HAVE_SNPRINTF)
98
99 check_library_exists (unwind get_static_proc_name "" HAVE_LIB_UNWIND)
100
101 check_c_source_compiles ("
102 #include <stdlib.h>
103 static void foo(void) __attribute__ ((unused));
104 int main(void) { return 0; }
105 " HAVE___ATTRIBUTE__)
106
107 check_c_source_compiles ("
108 #include <stdlib.h>
109 static void foo(void) __attribute__ ((visibility(\"default\")));
110 int main(void) { return 0; }
111 " HAVE___ATTRIBUTE__VISIBILITY_DEFAULT)
112
113 check_c_source_compiles ("
114 #include <stdlib.h>
115 static void foo(void) __attribute__ ((visibility(\"hidden\")));
116 int main(void) { return 0; }
117 " HAVE___ATTRIBUTE__VISIBILITY_HIDDEN)
118
119 check_c_source_compiles ("
120 int main(void) { if (__builtin_expect(0, 0)) return 1; return 0; }
121 " HAVE___BUILTIN_EXPECT)
122
123 check_c_source_compiles ("
124 int main(void)
125 {
126   int a; if (__sync_val_compare_and_swap(&a, 0, 1)) return 1; return 0;
127 }
128 " HAVE___SYNC_VAL_COMPARE_AND_SWAP)
129
130 check_c_source_compiles ("
131 #define _XOPEN_SOURCE 500
132 #include <pthread.h>
133 int main(void)
134 {
135   pthread_rwlock_t l;
136   pthread_rwlock_init(&l, NULL);
137   pthread_rwlock_rdlock(&l);
138   return 0;
139 }
140 " HAVE_RWLOCK)
141
142 check_c_source_compiles ("
143 __declspec(selectany) int a;
144 int main(void) { return 0; }
145 " HAVE___DECLSPEC)
146
147 check_cxx_source_compiles ("
148 #include <vector>
149 vector<int> t; int main() { }
150 " STL_NO_NAMESPACE)
151
152 check_cxx_source_compiles ("
153 #include <vector>
154 std::vector<int> t; int main() { }
155 " STL_STD_NAMESPACE)
156
157 check_cxx_source_compiles ("
158 #include <iostream>
159 std::ostream& operator<<(std::ostream&, struct s);
160 using ::operator<<;
161 int main() { }
162 " HAVE_USING_OPERATOR)
163
164 check_cxx_source_compiles ("
165 namespace Outer { namespace Inner { int i = 0; }}
166 using namespace Outer::Inner;;
167 int main() { return i; }
168 " HAVE_NAMESPACES)
169
170 set (_PC_FIELDS
171   "gregs[REG_PC]"
172   "gregs[REG_EIP]"
173   "gregs[REG_RIP]"
174   "sc_ip"
175   "uc_regs->gregs[PT_NIP]"
176   "gregs[R15]"
177   "arm_pc"
178   "mc_eip"
179   "mc_rip"
180   "__gregs[REG_EIP]"
181   "__gregs[REG_RIP]"
182   "ss.eip"
183   "__ss.__eip"
184   "ss.rip"
185   "__ss.__rip"
186   "ss.srr0"
187   "__ss.__srr0"
188 )
189
190 set (_PC_HEADERS ucontext.h signal.h)
191
192 if (HAVE_UCONTEXT_H AND NOT PC_FROM_UCONTEXT)
193   foreach (_PC_FIELD ${_PC_FIELDS})
194     foreach (_PC_HEADER ${_PC_HEADERS})
195       set (_TMP
196       ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/uctfield.c)
197       file (WRITE ${_TMP} "
198 #define _GNU_SOURCE 1
199 #include <${_PC_HEADER}>
200 int main(void)
201 {
202   ucontext_t u;
203   return u.${_PC_FIELD} == 0;
204 }
205 ")
206       try_compile (HAVE_PC_FROM_UCONTEXT ${CMAKE_CURRENT_BINARY_DIR} ${_TMP}
207         COMPILE_DEFINITIONS _GNU_SOURCE=1)
208
209       if (HAVE_PC_FROM_UCONTEXT)
210         set (PC_FROM_UCONTEXT ${_PC_FIELD} CACHE)
211       endif (HAVE_PC_FROM_UCONTEXT)
212     endforeach (_PC_HEADER)
213   endforeach (_PC_FIELD)
214 endif  (HAVE_UCONTEXT_H AND NOT PC_FROM_UCONTEXT)
215
216 if (STL_STD_NAMESPACE)
217   set (STL_NAMESPACE std)
218 else (STL_STD_NAMESPACE)
219   set (STL_NAMESPACE "")
220 endif (STL_STD_NAMESPACE)
221
222 set (GOOGLE_NAMESPACE google)
223 set (_START_GOOGLE_NAMESPACE_ "namespace ${GOOGLE_NAMESPACE} {")
224 set (_END_GOOGLE_NAMESPACE_ "}")
225
226 if (HAVE___UINT16)
227   set (ac_cv_have___uint16 1)
228 else (HAVE___UINT16)
229   set (ac_cv_have___uint16 0)
230 endif (HAVE___UINT16)
231
232 if (HAVE_INTTYPES_H)
233   set (ac_cv_have_inttypes_h 1)
234 else (HAVE_INTTYPES_H)
235   set (ac_cv_have_inttypes_h 0)
236 endif (HAVE_INTTYPES_H)
237
238 if (HAVE_LIB_GFLAGS)
239   set (ac_cv_have_libgflags 1)
240 else (HAVE_LIB_GFLAGS)
241   set (ac_cv_have_libgflags 0)
242 endif (HAVE_LIB_GFLAGS)
243
244 if (HAVE_STDINT_H)
245   set (ac_cv_have_stdint_h 1)
246 else (HAVE_STDINT_H)
247   set (ac_cv_have_stdint_h 0)
248 endif (HAVE_STDINT_H)
249
250 if (HAVE_SYS_TYPES_H)
251   set (ac_cv_have_systypes_h 1)
252 else (HAVE_SYS_TYPES_H)
253   set (ac_cv_have_systypes_h 0)
254 endif (HAVE_SYS_TYPES_H)
255
256 if (HAVE_U_INT16_T)
257   set (ac_cv_have_u_int16_t 1)
258 else (HAVE_U_INT16_T)
259   set (ac_cv_have_u_int16_t 0)
260 endif (HAVE_U_INT16_T)
261
262 if (HAVE_UINT16_T)
263   set (ac_cv_have_uint16_t 1)
264 else (HAVE_UINT16_T)
265   set (ac_cv_have_uint16_t 0)
266 endif (HAVE_UINT16_T)
267
268 if (HAVE_UNISTD_H)
269   set (ac_cv_have_unistd_h 1)
270 else (HAVE_UNISTD_H)
271   set (ac_cv_have_unistd_h 0)
272 endif (HAVE_UNISTD_H)
273
274 set (ac_google_namespace ${GOOGLE_NAMESPACE})
275 set (ac_google_end_namespace ${_END_GOOGLE_NAMESPACE_})
276 set (ac_google_start_namespace ${_START_GOOGLE_NAMESPACE_})
277
278 if (HAVE___ATTRIBUTE__)
279   set (ac_cv___attribute___noreturn "__attribute__((noreturn))")
280   set (ac_cv___attribute___noinline "__attribute__((noinline))")
281 elseif (HAVE___DECLSPEC)
282   set (ac_cv___attribute___noreturn "__declspec(noreturn)")
283   #set (ac_cv___attribute___noinline "__declspec(noinline)")
284 endif (HAVE___ATTRIBUTE__)
285
286 if (HAVE___BUILTIN_EXPECT)
287   set (ac_cv_have___builtin_expect 1)
288 else (HAVE___BUILTIN_EXPECT)
289   set (ac_cv_have___builtin_expect 0)
290 endif (HAVE___BUILTIN_EXPECT)
291
292 if (HAVE_USING_OPERATOR)
293   set (ac_cv_cxx_using_operator 1)
294 else (HAVE_USING_OPERATOR)
295   set (ac_cv_cxx_using_operator 0)
296 endif (HAVE_USING_OPERATOR)
297
298 set (SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P})
299
300 if (Threads_FOUND AND CMAKE_USE_PTHREADS_INIT)
301   set (HAVE_PTHREAD 1)
302 endif (Threads_FOUND AND CMAKE_USE_PTHREADS_INIT)
303
304 set (TEST_SRC_DIR \"${CMAKE_CURRENT_SOURCE_DIR}\")
305
306 configure_file (src/config.h.cmake.in config.h)
307 configure_file (src/glog/logging.h.in glog/logging.h @ONLY)
308 configure_file (src/glog/raw_logging.h.in glog/raw_logging.h @ONLY)
309 configure_file (src/glog/stl_logging.h.in glog/stl_logging.h @ONLY)
310 configure_file (src/glog/vlog_is_on.h.in glog/vlog_is_on.h @ONLY)
311
312 set (CMAKE_CXX_VISIBILITY_PRESET default)
313 set (CMAKE_VISIBILITY_INLINES_HIDDEN 1)
314
315 set (GLOG_PUBLIC_H
316   ${CMAKE_CURRENT_BINARY_DIR}/config.h
317   ${CMAKE_CURRENT_BINARY_DIR}/glog/logging.h
318   ${CMAKE_CURRENT_BINARY_DIR}/glog/raw_logging.h
319   ${CMAKE_CURRENT_BINARY_DIR}/glog/stl_logging.h
320   ${CMAKE_CURRENT_BINARY_DIR}/glog/vlog_is_on.h
321   src/glog/log_severity.h
322 )
323
324 set (GLOG_SRCS
325   ${GLOG_PUBLIC_H}
326   src/base/commandlineflags.h
327   src/base/googleinit.h
328   src/base/mutex.h
329   src/demangle.cc
330   src/demangle.h
331   src/logging.cc
332   src/raw_logging.cc
333   src/symbolize.cc
334   src/symbolize.h
335   src/utilities.cc
336   src/utilities.h
337   src/vlog_is_on.cc
338 )
339
340 if (HAVE_PTHREAD)
341   list (APPEND GLOG_SRCS src/signalhandler.cc)
342 endif (HAVE_PTHREAD)
343
344 if (WIN32)
345   list (APPEND GLOG_SRCS
346     src/windows/port.cc
347     src/windows/port.h
348   )
349 endif (WIN32)
350
351 add_library (glog
352   ${GLOG_SRCS}
353 )
354
355 if (WIN32 AND HAVE_SNPRINTF)
356   set_property (SOURCE src/windows/port.cc APPEND PROPERTY COMPILE_DEFINITIONS
357     HAVE_SNPRINTF)
358 endif (WIN32 AND HAVE_SNPRINTF)
359
360 if (gflags_FOUND)
361   target_include_directories (glog PUBLIC ${gflags_INCLUDE_DIR})
362   target_link_libraries (glog PUBLIC ${gflags_LIBRARIES})
363 endif (gflags_FOUND)
364
365 set_target_properties (glog PROPERTIES VERSION ${GLOG_MAJOR_VERSION})
366 set_target_properties (glog PROPERTIES SOVERSION ${GLOG_VERSION})
367
368 if (WIN32)
369   target_compile_definitions (glog PUBLIC GLOG_NO_ABBREVIATED_SEVERITIES)
370 endif (WIN32)
371
372 set_target_properties (glog PROPERTIES PUBLIC_HEADER "${GLOG_PUBLIC_H}")
373
374 target_include_directories (glog BEFORE PUBLIC
375   "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
376   "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>"
377   PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
378   PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
379
380 if (WIN32)
381   target_include_directories (glog PUBLIC
382     "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/windows>"
383     PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/windows)
384 endif (WIN32)
385
386 set_target_properties (glog PROPERTIES DEFINE_SYMBOL LIBGLOG_EXPORTS)
387
388 if (NOT BUILD_SHARED_LIBS)
389   target_compile_definitions (glog PUBLIC GOOGLE_GLOG_DLL_DECL=)
390 else (NOT BUILD_SHARED_LIBS)
391   target_compile_definitions (glog PRIVATE GOOGLE_GLOG_IS_A_DLL=1)
392
393   if (HAVE___ATTRIBUTE__VISIBILITY_DEFAULT)
394     set (_EXPORT "__attribute__((visibility(\"default\")))")
395     set (_IMPORT "")
396   elseif (HAVE___DECLSPEC)
397     set (_EXPORT "__declspec(dllexport)")
398     set (_IMPORT "__declspec(dllimport)")
399   endif (HAVE___ATTRIBUTE__VISIBILITY_DEFAULT)
400
401   target_compile_definitions (glog PRIVATE
402     "GOOGLE_GLOG_DLL_DECL=${_EXPORT}")
403   target_compile_definitions (glog INTERFACE
404     "GOOGLE_GLOG_DLL_DECL=${_IMPORT}")
405   target_compile_definitions (glog INTERFACE
406     "GOOGLE_GLOG_DLL_DECL_FOR_UNITTESTS=${_IMPORT}")
407 endif (NOT BUILD_SHARED_LIBS)
408
409 if (HAVE_PTHREAD)
410   target_link_libraries (glog PUBLIC ${CMAKE_THREAD_LIBS_INIT})
411 else (HAVE_PTHREAD)
412   target_compile_definitions (glog PUBLIC NO_THREADS)
413 endif (HAVE_PTHREAD)
414
415 if (HAVE_EXECINFO_H)
416   set (HAVE_STACKTRACE 1)
417 endif (HAVE_EXECINFO_H)
418
419 if (UNIX OR (APPLE AND HAVE_DLADDR))
420   set (HAVE_SYMBOLIZE 1)
421 endif (UNIX OR (APPLE AND HAVE_DLADDR))
422
423 # Unit testing
424
425 add_executable (logging_unittest
426   src/logging_unittest.cc
427 )
428
429 target_link_libraries (logging_unittest PRIVATE glog)
430
431 add_executable (stl_logging_unittest
432   src/stl_logging_unittest.cc
433 )
434
435 target_link_libraries (stl_logging_unittest PRIVATE glog)
436
437 if (HAVE_NO_DEPRECATED)
438   set_property (TARGET stl_logging_unittest APPEND PROPERTY COMPILE_OPTIONS
439     -Wno-deprecated)
440 endif (HAVE_NO_DEPRECATED)
441
442 if (HAVE_UNORDERED_MAP AND HAVE_UNORDERED_SET)
443   target_compile_definitions (stl_logging_unittest PRIVATE
444     GLOG_STL_LOGGING_FOR_UNORDERED)
445 endif (HAVE_UNORDERED_MAP AND HAVE_UNORDERED_SET)
446
447 if (HAVE_TR1_UNORDERED_MAP AND HAVE_TR1_UNORDERED_SET)
448   target_compile_definitions (stl_logging_unittest PRIVATE
449     GLOG_STL_LOGGING_FOR_TR1_UNORDERED)
450 endif (HAVE_TR1_UNORDERED_MAP AND HAVE_TR1_UNORDERED_SET)
451
452 if (HAVE_EXT_HASH_MAP AND HAVE_EXT_HASH_SET)
453   target_compile_definitions (stl_logging_unittest PRIVATE
454     GLOG_STL_LOGGING_FOR_EXT_HASH)
455 endif (HAVE_EXT_HASH_MAP AND HAVE_EXT_HASH_SET)
456
457 if (HAVE_EXT_SLIST)
458   target_compile_definitions (stl_logging_unittest PRIVATE
459     GLOG_STL_LOGGING_FOR_EXT_SLIST)
460 endif (HAVE_EXT_SLIST)
461
462 if (HAVE_SYMBOLIZE)
463   add_executable (symbolize_unittest
464     src/symbolize_unittest.cc
465   )
466
467   target_link_libraries (symbolize_unittest PRIVATE glog)
468 endif (HAVE_SYMBOLIZE)
469
470 add_executable (demangle_unittest
471   src/demangle_unittest.cc
472 )
473
474 target_link_libraries (demangle_unittest PRIVATE glog)
475
476 if (HAVE_STACKTRACE)
477   add_executable (stacktrace_unittest
478     src/stacktrace_unittest.cc
479   )
480
481   target_link_libraries (stacktrace_unittest PRIVATE glog)
482 endif (HAVE_STACKTRACE)
483
484 add_executable (utilities_unittest
485   src/utilities_unittest.cc
486 )
487
488 target_link_libraries (utilities_unittest PRIVATE glog)
489
490 if (HAVE_STACKTRACE AND HAVE_SYMBOLIZE)
491   add_executable (signalhandler_unittest
492     src/signalhandler_unittest.cc
493   )
494
495   target_link_libraries (signalhandler_unittest PRIVATE glog)
496 endif (HAVE_STACKTRACE AND HAVE_SYMBOLIZE)
497
498 add_test (NAME demangle COMMAND demangle_unittest)
499 add_test (NAME logging COMMAND logging_unittest)
500
501 if (TARGET signalhandler_unittest)
502   add_test (NAME signalhandler COMMAND signalhandler_unittest)
503 endif (TARGET signalhandler_unittest)
504
505 if (TARGET stacktrace_unittest)
506   add_test (NAME stacktrace COMMAND stacktrace_unittest)
507 endif (TARGET stacktrace_unittest)
508
509 add_test (NAME stl_logging COMMAND stl_logging_unittest)
510
511 if (TARGET symbolize_unittest)
512   add_test (NAME symbolize COMMAND symbolize_unittest)
513 endif (TARGET symbolize_unittest)
514
515 install (TARGETS glog
516   EXPORT glog-targets
517   RUNTIME DESTINATION bin
518   PUBLIC_HEADER DESTINATION include/glog
519   LIBRARY DESTINATION lib
520   ARCHIVE DESTINATION lib)
521
522 # Build tree config
523
524 set (glog_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
525 set (glog_PACKAGE_DEPS)
526
527 if (gflags_FOUND)
528   set (glog_PACKAGE_DEPS
529 "
530 include (CMakeFindDependencyMacro)
531
532 find_dependency (gflags ${gflags_VERSION})
533 ")
534 endif (gflags_FOUND)
535
536 configure_package_config_file (glog-config.cmake.in
537   ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake INSTALL_DESTINATION
538   lib/cmake/glog PATH_VARS glog_INCLUDE_DIR
539   NO_CHECK_REQUIRED_COMPONENTS_MACRO)
540
541 # The version file is the same both for build tree and install mode config
542 write_basic_package_version_file (glog-config-version.cmake VERSION
543   ${GLOG_VERSION} COMPATIBILITY SameMajorVersion)
544
545 # Install config
546
547 set (glog_INCLUDE_DIR include)
548
549 configure_package_config_file (glog-config.cmake.in
550   ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/glog-config.cmake
551   INSTALL_DESTINATION lib/cmake/glog PATH_VARS glog_INCLUDE_DIR
552   NO_CHECK_REQUIRED_COMPONENTS_MACRO)
553
554 export (TARGETS glog FILE glog-targets.cmake)
555 export (PACKAGE glog)
556
557 install (FILES
558   ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/glog-config.cmake
559   ${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake
560   DESTINATION lib/cmake/glog)
561
562 install (EXPORT glog-targets DESTINATION lib/cmake/glog)