cmake: use gflags package config instead of a find module
This allows to avoid conflicts between third party gflags find modules floating around. If a package provide a local version of gflags find module, clients which locate glog will incorrectly use it. Another problem is a CMake error message "cmake_policy PUSH without matching POP" in nested find_package calls. In summary, we need to ensure to use the original gflags package config.
This commit is contained in:
parent
b2c3afecaa
commit
a92e1d95c5
@ -599,8 +599,19 @@ install (TARGETS glog
|
||||
LIBRARY DESTINATION ${_glog_CMake_LIBDIR}
|
||||
ARCHIVE DESTINATION ${_glog_CMake_LIBDIR})
|
||||
|
||||
set (glog_POLICY_VERSION 3.0)
|
||||
|
||||
if (gflags_FOUND)
|
||||
set (gflags_DEPENDENCY "find_dependency (gflags ${gflags_VERSION})")
|
||||
# Ensure clients locate only the package config and not third party find
|
||||
# modules having the same name. This avoid cmake_policy PUSH/POP errors.
|
||||
if (CMAKE_VERSION VERSION_LESS 3.9)
|
||||
set (gflags_DEPENDENCY "find_dependency (gflags ${gflags_VERSION})")
|
||||
else (CMAKE_VERSION VERSION_LESS 3.9)
|
||||
# Passing additional find_package arguments to find_dependency is possible
|
||||
# starting with CMake 3.9.
|
||||
set (glog_POLICY_VERSION 3.9)
|
||||
set (gflags_DEPENDENCY "find_dependency (gflags ${gflags_VERSION} NO_MODULE)")
|
||||
endif (CMAKE_VERSION VERSION_LESS 3.9)
|
||||
endif (gflags_FOUND)
|
||||
|
||||
configure_package_config_file (glog-config.cmake.in
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
cmake_policy (PUSH)
|
||||
cmake_policy (VERSION 3.0)
|
||||
cmake_policy (VERSION @glog_POLICY_VERSION@)
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user