Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
G
gflags
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
gflags
Commits
389ef3f7
Commit
389ef3f7
authored
Mar 01, 2016
by
Andreas Schuh
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:gflags/gflags
parents
752c6324
f9e69b35
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
412 additions
and
146 deletions
+412
-146
CMakeLists.txt
CMakeLists.txt
+226
-84
config.cmake.in
cmake/config.cmake.in
+114
-57
utils.cmake
cmake/utils.cmake
+68
-1
CMakeLists.txt
test/CMakeLists.txt
+2
-2
CMakeLists.txt
test/nc/CMakeLists.txt
+2
-2
No files found.
CMakeLists.txt
View file @
389ef3f7
## CMake configuration file of gflags project
##
## This CMakeLists.txt defines some gflags specific configuration variables
## using the "gflags_define" utility macro. The default values of these variables
## can be overridden either on the CMake command-line using the -D option of
## the cmake command or in a super-project which includes the gflags source
## tree by setting the GFLAGS_<varname> CMake variables before adding the
## gflags source directory via CMake's "add_subdirectory" command. Only when
## the non-cached variable GFLAGS_IS_SUBPROJECT has a value equivalent to FALSE,
## these configuration variables are added to the CMake cache so they can be
## edited in the CMake GUI. By default, GFLAGS_IS_SUBPROJECT is set to TRUE when
## the CMAKE_SOURCE_DIR is not identical to the directory of this CMakeLists.txt
## file, i.e., the top-level directory of the gflags project source tree.
##
## When this project is a subproject (GFLAGS_IS_SUBPROJECT is TRUE), the default
## settings are such that only the static single-threaded library is built without
## installation of the gflags files. The "gflags" target is in this case an ALIAS
## library target for the "gflags_nothreads_static" library target. Targets which
## depend on the gflags library should link to the "gflags" library target.
##
## Example CMakeLists.txt of user project which requires separate gflags installation:
## cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
##
## project(Foo)
##
## find_package(gflags REQUIRED)
##
## add_executable(foo src/foo.cc)
## target_link_libraries(foo gflags)
##
## Example CMakeLists.txt of user project which requires separate single-threaded static gflags installation:
## cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
##
## project(Foo)
##
## find_package(gflags COMPONENTS nothreads_static)
##
## add_executable(foo src/foo.cc)
## target_link_libraries(foo gflags)
##
## Example CMakeLists.txt of super-project which contains gflags source tree:
## cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
##
## project(Foo)
##
## add_subdirectory(gflags)
##
## add_executable(foo src/foo.cc)
## target_link_libraries(foo gflags)
##
## Variables to configure the source files:
## - GFLAGS_IS_A_DLL
## - GFLAGS_NAMESPACE
## - GFLAGS_ATTRIBUTE_UNUSED
## - GFLAGS_INTTYPES_FORMAT
##
## Variables to configure the build:
## - GFLAGS_SOVERSION
## - GFLAGS_BUILD_SHARED_LIBS
## - GFLAGS_BUILD_STATIC_LIBS
## - GFLAGS_BUILD_gflags_LIB
## - GFLAGS_BUILD_gflags_nothreads_LIB
## - GFLAGS_BUILD_TESTING
## - GFLAGS_BUILD_PACKAGING
##
## Variables to configure the installation:
## - GFLAGS_INCLUDE_DIR
## - GFLAGS_LIBRARY_INSTALL_DIR or LIB_INSTALL_DIR or LIB_SUFFIX
## - GFLAGS_INSTALL_HEADERS
## - GFLAGS_INSTALL_SHARED_LIBS
## - GFLAGS_INSTALL_STATIC_LIBS
cmake_minimum_required
(
VERSION 2.8.12 FATAL_ERROR
)
if
(
POLICY CMP0042
)
...
...
@@ -34,17 +106,36 @@ version_numbers (
PACKAGE_VERSION_PATCH
)
set
(
PACKAGE_SOVERSION
"
${
PACKAGE_VERSION_MAJOR
}
"
)
# shared library ABI version number, can be overridden by package maintainers
# using -DGFLAGS_SOVERSION=XXX on the command-line
if
(
GFLAGS_SOVERSION
)
set
(
PACKAGE_SOVERSION
"
${
GFLAGS_SOVERSION
}
"
)
else
()
set
(
PACKAGE_SOVERSION
"
${
PACKAGE_VERSION_MAJOR
}
"
)
endif
()
# when gflags is included as subproject (e.g., as Git submodule/subtree) in the source
# tree of a project that uses it, no variables should be added to the CMake cache;
# users may set the non-cached variable GFLAGS_IS_SUBPROJECT before add_subdirectory(gflags)
if
(
NOT DEFINED GFLAGS_IS_SUBPROJECT
)
if
(
"^
${
CMAKE_SOURCE_DIR
}
$"
STREQUAL
"^
${
PROJECT_SOURCE_DIR
}
$"
)
set
(
GFLAGS_IS_SUBPROJECT FALSE
)
else
()
set
(
GFLAGS_IS_SUBPROJECT TRUE
)
endif
()
endif
()
# prefix for package variables in CMake configuration file
string
(
TOUPPER
"
${
PACKAGE_NAME
}
"
PACKAGE_PREFIX
)
# ----------------------------------------------------------------------------
# options
if
(
NOT GFLAGS_NAMESPACE
)
# maintain binary backwards compatibility with gflags library version <= 2.0,
# but at the same time enable the use of the preferred new "gflags" namespace
set
(
GFLAGS_NAMESPACE
"google;
${
PACKAGE_NAME
}
"
CACHE STRING
"Name(s) of library namespace (separate multiple options by semicolon)"
)
mark_as_advanced
(
GFLAGS_NAMESPACE
)
endif
()
set
(
GFLAGS_NAMESPACE_SECONDARY
"
${
GFLAGS_NAMESPACE
}
"
)
# maintain binary backwards compatibility with gflags library version <= 2.0,
# but at the same time enable the use of the preferred new "gflags" namespace
gflags_define
(
STRING NAMESPACE
"Name(s) of library namespace (separate multiple options by semicolon)"
"google;
${
PACKAGE_NAME
}
"
"
${
PACKAGE_NAME
}
"
)
gflags_property
(
NAMESPACE ADVANCED TRUE
)
set
(
GFLAGS_NAMESPACE_SECONDARY
"
${
NAMESPACE
}
"
)
list
(
REMOVE_DUPLICATES GFLAGS_NAMESPACE_SECONDARY
)
if
(
NOT GFLAGS_NAMESPACE_SECONDARY
)
message
(
FATAL_ERROR
"GFLAGS_NAMESPACE must be set to one (or more) valid C++ namespace identifier(s separated by semicolon
\"
;
\"
)."
)
...
...
@@ -57,46 +148,54 @@ endforeach ()
list
(
GET GFLAGS_NAMESPACE_SECONDARY 0 GFLAGS_NAMESPACE
)
list
(
REMOVE_AT GFLAGS_NAMESPACE_SECONDARY 0
)
option
(
BUILD_SHARED_LIBS
"Request build of shared libraries."
OFF
)
option
(
BUILD_STATIC_LIBS
"Request build of static libraries (default if BUILD_SHARED_LIBS is OFF)."
OFF
)
option
(
BUILD_gflags_LIB
"Request build of the multi-threaded gflags library."
ON
)
option
(
BUILD_gflags_nothreads_LIB
"Request build of the single-threaded gflags library."
ON
)
option
(
BUILD_PACKAGING
"Enable build of distribution packages using CPack."
OFF
)
option
(
BUILD_TESTING
"Enable build of the unit tests and their execution using CTest."
OFF
)
option
(
INSTALL_HEADERS
"Request packaging of headers and other development files."
ON
)
mark_as_advanced
(
CLEAR CMAKE_INSTALL_PREFIX
)
mark_as_advanced
(
CMAKE_CONFIGURATION_TYPES
BUILD_STATIC_LIBS
INSTALL_HEADERS
)
if
(
APPLE
)
mark_as_advanced
(
CMAKE_OSX_ARCHITECTURES
CMAKE_OSX_DEPLOYMENT_TARGET
CMAKE_OSX_SYSROOT
)
endif
()
# cached build options when gflags is not a subproject, otherwise non-cached CMake variables
# usage: gflags_define(BOOL <name> <doc> <default> [<subproject default>])
gflags_define
(
BOOL BUILD_SHARED_LIBS
"Request build of shared libraries."
OFF OFF
)
gflags_define
(
BOOL BUILD_STATIC_LIBS
"Request build of static libraries (default if BUILD_SHARED_LIBS is OFF)."
OFF ON
)
gflags_define
(
BOOL BUILD_gflags_LIB
"Request build of the multi-threaded gflags library."
ON OFF
)
gflags_define
(
BOOL BUILD_gflags_nothreads_LIB
"Request build of the single-threaded gflags library."
ON ON
)
gflags_define
(
BOOL BUILD_PACKAGING
"Enable build of distribution packages using CPack."
OFF OFF
)
gflags_define
(
BOOL BUILD_TESTING
"Enable build of the unit tests and their execution using CTest."
OFF OFF
)
gflags_define
(
BOOL INSTALL_HEADERS
"Request installation of headers and other development files."
ON OFF
)
gflags_define
(
BOOL INSTALL_SHARED_LIBS
"Request installation of shared libraries."
ON ON
)
gflags_define
(
BOOL INSTALL_STATIC_LIBS
"Request installation of static libraries."
ON OFF
)
gflags_property
(
BUILD_STATIC_LIBS ADVANCED TRUE
)
gflags_property
(
INSTALL_HEADERS ADVANCED TRUE
)
gflags_property
(
INSTALL_SHARED_LIBS ADVANCED TRUE
)
gflags_property
(
INSTALL_STATIC_LIBS ADVANCED TRUE
)
if
(
NOT GFLAGS_IS_SUBPROJECT
)
foreach
(
varname IN ITEMS CMAKE_INSTALL_PREFIX
)
gflags_property
(
${
varname
}
ADVANCED FALSE
)
endforeach
()
foreach
(
varname IN ITEMS CMAKE_CONFIGURATION_TYPES CMAKE_OSX_ARCHITECTURES CMAKE_OSX_DEPLOYMENT_TARGET CMAKE_OSX_SYSROOT
)
gflags_property
(
${
varname
}
ADVANCED TRUE
)
endforeach
()
if
(
NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CXX_FLAGS
)
gflags_set
(
CMAKE_BUILD_TYPE Release
)
endif
()
if
(
CMAKE_CONFIGURATION_TYPES
)
gflags_property
(
CMAKE_BUILD_TYPE STRINGS
"
${
CMAKE_CONFIGURATION_TYPES
}
"
)
endif
()
endif
()
# NOT GFLAGS_IS_SUBPROJECT
if
(
NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS
)
set
(
BUILD_STATIC_LIBS ON
)
endif
()
if
(
NOT BUILD_gflags_LIB AND NOT BUILD_gflags_nothreads_LIB
)
message
(
FATAL_ERROR
"At least one of BUILD_gflags_LIB and
BUILD_gflags_nothreads_LIB must be ON."
)
message
(
FATAL_ERROR
"At least one of [GFLAGS_]BUILD_gflags_LIB and [GFLAGS_]
BUILD_gflags_nothreads_LIB must be ON."
)
endif
()
if
(
NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CXX_FLAGS
)
set_property
(
CACHE CMAKE_BUILD_TYPE PROPERTY VALUE Release
)
gflags_define
(
STRING INCLUDE_DIR
"Name of include directory of installed header files relative to CMAKE_INSTALL_PREFIX/include/"
"
${
PACKAGE_NAME
}
"
)
gflags_property
(
INCLUDE_DIR ADVANCED TRUE
)
if
(
IS_ABSOLUTE INCLUDE_DIR
)
message
(
FATAL_ERROR
"[GFLAGS_]INCLUDE_DIR must be a path relative to CMAKE_INSTALL_PREFIX/include/"
)
endif
()
if
(
NOT GFLAGS_INCLUDE_DIR
)
set
(
GFLAGS_INCLUDE_DIR
"
${
PACKAGE_NAME
}
"
CACHE STRING
"Name of include directory of installed header files"
)
mark_as_advanced
(
GFLAGS_INCLUDE_DIR
)
else
()
if
(
IS_ABSOLUTE GFLAGS_INCLUDE_DIR
)
message
(
FATAL_ERROR
"GFLAGS_INCLUDE_DIR must be a path relative to CMAKE_INSTALL_PREFIX/include"
)
endif
()
if
(
GFLAGS_INCLUDE_DIR MATCHES
"^
\\
.
\\
.[/
\\
]"
)
message
(
FATAL_ERROR
"GFLAGS_INCLUDE_DIR must not start with parent directory reference (../)"
)
endif
()
if
(
INCLUDE_DIR MATCHES
"^
\\
.
\\
.[/
\\
]"
)
message
(
FATAL_ERROR
"[GFLAGS_]INCLUDE_DIR must not start with parent directory reference (../)"
)
endif
()
set
(
GFLAGS_INCLUDE_DIR
"
${
INCLUDE_DIR
}
"
)
# ----------------------------------------------------------------------------
# system checks
...
...
@@ -135,10 +234,10 @@ else ()
endif
()
endif
()
set
(
GFLAGS_INTTYPES_FORMAT
""
CACHE STRING
"Format of integer types:
\"
C99
\"
(uint32_t),
\"
BSD
\"
(u_int32_t),
\"
VC7
\"
(__int32)
"
)
set_property
(
CACHE GFLAGS_INTTYPES_FORMAT PROPERTY
STRINGS
"C99;BSD;VC7"
)
mark_as_advanced
(
GFLAGS_INTTYPES_FORMAT
)
if
(
NOT
GFLAGS_
INTTYPES_FORMAT
)
gflags_define
(
STRING INTTYPES_FORMAT
"Format of integer types:
\"
C99
\"
(uint32_t),
\"
BSD
\"
(u_int32_t),
\"
VC7
\"
(__int32)"
"
"
)
gflags_property
(
INTTYPES_FORMAT
STRINGS
"C99;BSD;VC7"
)
gflags_property
(
INTTYPES_FORMAT ADVANCED TRUE
)
if
(
NOT INTTYPES_FORMAT
)
set
(
TYPES uint32_t u_int32_t
)
if
(
MSVC
)
list
(
INSERT TYPES 0 __int32
)
...
...
@@ -150,29 +249,30 @@ if (NOT GFLAGS_INTTYPES_FORMAT)
endif
()
endforeach
()
if
(
HAVE_uint32_t
)
set_property
(
CACHE GFLAGS_INTTYPES_FORMAT PROPERTY VALUE
C99
)
gflags_set
(
INTTYPES_FORMAT
C99
)
elseif
(
HAVE_u_int32_t
)
set_property
(
CACHE GFLAGS_INTTYPES_FORMAT PROPERTY VALUE
BSD
)
gflags_set
(
INTTYPES_FORMAT
BSD
)
elseif
(
HAVE___int32
)
set_property
(
CACHE GFLAGS_INTTYPES_FORMAT PROPERTY VALUE
VC7
)
gflags_set
(
INTTYPES_FORMAT
VC7
)
else
()
mark_as_advanced
(
CLEAR GFLAGS_INTTYPES_FORMAT
)
gflags_property
(
INTTYPES_FORMAT ADVANCED FALSE
)
message
(
FATAL_ERROR
"Do not know how to define a 32-bit integer quantity on your system!"
" Neither uint32_t, u_int32_t, nor __int32 seem to be available."
" Set
GFLAGS_
INTTYPES_FORMAT to either C99, BSD, or VC7 and try again."
)
" Set
[GFLAGS_]
INTTYPES_FORMAT to either C99, BSD, or VC7 and try again."
)
endif
()
endif
()
# use of special characters in strings to circumvent bug #0008226
if
(
"^
${
GFLAGS_
INTTYPES_FORMAT
}
$"
STREQUAL
"^WIN$"
)
set_property
(
CACHE GFLAGS_INTTYPES_FORMAT PROPERTY VALUE
VC7
)
if
(
"^
${
INTTYPES_FORMAT
}
$"
STREQUAL
"^WIN$"
)
gflags_set
(
INTTYPES_FORMAT
VC7
)
endif
()
if
(
NOT
GFLAGS_
INTTYPES_FORMAT MATCHES
"^(C99|BSD|VC7)$"
)
message
(
FATAL_ERROR
"Invalid value for
GFLAGS_
INTTYPES_FORMAT! Choose one of
\"
C99
\"
,
\"
BSD
\"
, or
\"
VC7
\"
"
)
if
(
NOT INTTYPES_FORMAT MATCHES
"^(C99|BSD|VC7)$"
)
message
(
FATAL_ERROR
"Invalid value for
[GFLAGS_]
INTTYPES_FORMAT! Choose one of
\"
C99
\"
,
\"
BSD
\"
, or
\"
VC7
\"
"
)
endif
()
set
(
GFLAGS_INTTYPES_FORMAT
"
${
INTTYPES_FORMAT
}
"
)
set
(
GFLAGS_INTTYPES_FORMAT_C99 0
)
set
(
GFLAGS_INTTYPES_FORMAT_BSD 0
)
set
(
GFLAGS_INTTYPES_FORMAT_VC7 0
)
set
(
"GFLAGS_INTTYPES_FORMAT_
${
GFLAGS_
INTTYPES_FORMAT
}
"
1
)
set
(
"GFLAGS_INTTYPES_FORMAT_
${
INTTYPES_FORMAT
}
"
1
)
if
(
MSVC
)
set
(
HAVE_strtoll 0
)
...
...
@@ -184,16 +284,16 @@ else ()
endif
()
endif
()
set
(
CMAKE_THREAD_PREFER_PTHREAD TRUE
)
find_package
(
Threads
)
if
(
Threads_FOUND AND CMAKE_USE_PTHREADS_INIT
)
if
(
BUILD_gflags_LIB
)
set
(
CMAKE_THREAD_PREFER_PTHREAD TRUE
)
find_package
(
Threads
)
if
(
Threads_FOUND AND CMAKE_USE_PTHREADS_INIT
)
set
(
HAVE_PTHREAD 1
)
check_type_size
(
pthread_rwlock_t RWLOCK LANGUAGE CXX
)
else
()
else
()
set
(
HAVE_PTHREAD 0
)
endif
()
if
(
UNIX AND NOT HAVE_PTHREAD AND BUILD_gflags_LIB
)
endif
()
if
(
UNIX AND NOT HAVE_PTHREAD
)
if
(
CMAKE_HAVE_PTHREAD_H
)
set
(
what
"library"
)
else
()
...
...
@@ -202,6 +302,9 @@ if (UNIX AND NOT HAVE_PTHREAD AND BUILD_gflags_LIB)
message
(
FATAL_ERROR
"Could not find pthread
${
what
}
. Check the log file"
"
\n\t
${
CMAKE_BINARY_DIR
}${
CMAKE_FILES_DIRECTORY
}
/CMakeError.log"
"
\n
or disable the build of the multi-threaded gflags library (BUILD_gflags_LIB=OFF)."
)
endif
()
else
()
set
(
HAVE_PTHREAD 0
)
endif
()
# ----------------------------------------------------------------------------
...
...
@@ -244,19 +347,23 @@ endif ()
# ----------------------------------------------------------------------------
# configure source files
if
(
CMAKE_COMPILER_IS_GNUCXX
)
if
(
NOT DEFINED GFLAGS_ATTRIBUTE_UNUSED
)
if
(
CMAKE_COMPILER_IS_GNUCXX
)
set
(
GFLAGS_ATTRIBUTE_UNUSED
"__attribute((unused))"
)
else
()
else
()
set
(
GFLAGS_ATTRIBUTE_UNUSED
)
endif
()
endif
()
# whenever we build a shared library (DLL on Windows), configure the public
# headers of the API for use of this library rather than the optionally
# also build statically linked library; users can override GFLAGS_DLL_DECL
if
(
BUILD_SHARED_LIBS
)
if
(
NOT DEFINED GFLAGS_IS_A_DLL
)
if
(
BUILD_SHARED_LIBS
)
set
(
GFLAGS_IS_A_DLL 1
)
else
()
else
()
set
(
GFLAGS_IS_A_DLL 0
)
endif
()
endif
()
configure_headers
(
PUBLIC_HDRS
${
PUBLIC_HDRS
}
)
...
...
@@ -265,9 +372,11 @@ configure_sources (GFLAGS_SRCS ${GFLAGS_SRCS})
# ----------------------------------------------------------------------------
# output directories
set
(
CMAKE_RUNTIME_OUTPUT_DIRECTORY
"bin"
)
set
(
CMAKE_LIBRARY_OUTPUT_DIRECTORY
"lib"
)
set
(
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"lib"
)
if
(
NOT GFLAGS_IS_SUBPROJECT
)
set
(
CMAKE_RUNTIME_OUTPUT_DIRECTORY
"bin"
)
set
(
CMAKE_LIBRARY_OUTPUT_DIRECTORY
"lib"
)
set
(
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"lib"
)
endif
()
# ----------------------------------------------------------------------------
# installation directories
...
...
@@ -281,13 +390,11 @@ else ()
# The LIB_INSTALL_DIR and LIB_SUFFIX variables are used by the Fedora
# package maintainers. Also package maintainers of other distribution
# packages need to be able to specify the name of the library directory.
if
(
NOT LIB_INSTALL_DIR
)
set
(
LIB_INSTALL_DIR
"lib
${
LIB_SUFFIX
}
"
)
if
(
NOT
GFLAGS_LIBRARY_INSTALL_DIR AND
LIB_INSTALL_DIR
)
set
(
GFLAGS_LIBRARY_INSTALL_DIR
"
${
LIB_INSTALL_DIR
}
"
)
endif
()
set
(
LIBRARY_INSTALL_DIR
"
${
LIB_INSTALL_DIR
}
"
CACHE PATH
"Directory of installed libraries, e.g.,
\"
lib64
\"
"
)
mark_as_advanced
(
LIBRARY_INSTALL_DIR
)
gflags_define
(
PATH LIBRARY_INSTALL_DIR
"Directory of installed libraries, e.g.,
\"
lib64
\"
"
"lib
${
LIB_SUFFIX
}
"
)
gflags_property
(
LIBRARY_INSTALL_DIR ADVANCED TRUE
)
set
(
INCLUDE_INSTALL_DIR include
)
set
(
CONFIG_INSTALL_DIR
${
LIBRARY_INSTALL_DIR
}
/cmake/
${
PACKAGE_NAME
}
)
endif
()
...
...
@@ -314,12 +421,12 @@ foreach (TYPE IN ITEMS STATIC SHARED)
# multi-threaded vs. single-threaded
foreach
(
opts IN ITEMS
""
_nothreads
)
if
(
BUILD_gflags
${
opts
}
_LIB
)
add_library
(
gflags
${
opts
}
-
${
type
}
${
TYPE
}
${
GFLAGS_SRCS
}
${
PRIVATE_HDRS
}
${
PUBLIC_HDRS
}
)
add_library
(
gflags
${
opts
}
_
${
type
}
${
TYPE
}
${
GFLAGS_SRCS
}
${
PRIVATE_HDRS
}
${
PUBLIC_HDRS
}
)
set
(
include_dirs
"$<BUILD_INTERFACE:
${
PROJECT_BINARY_DIR
}
/include>"
)
if
(
INSTALL_HEADERS
)
list
(
APPEND include_dirs
"$<INSTALL_INTERFACE:
${
INCLUDE_INSTALL_DIR
}
>"
)
endif
()
target_include_directories
(
gflags
${
opts
}
-
${
type
}
target_include_directories
(
gflags
${
opts
}
_
${
type
}
PUBLIC
"
${
include_dirs
}
"
PRIVATE
"
${
PROJECT_SOURCE_DIR
}
/src;
${
PROJECT_BINARY_DIR
}
/include/
${
GFLAGS_INCLUDE_DIR
}
"
)
...
...
@@ -328,35 +435,67 @@ foreach (TYPE IN ITEMS STATIC SHARED)
else
()
set
(
defines
"GFLAGS_IS_A_DLL=
${
GFLAGS_IS_A_DLL
}
"
)
if
(
CMAKE_USE_PTHREADS_INIT
)
target_link_libraries
(
gflags
${
opts
}
-
${
type
}
${
CMAKE_THREAD_LIBS_INIT
}
)
target_link_libraries
(
gflags
${
opts
}
_
${
type
}
${
CMAKE_THREAD_LIBS_INIT
}
)
endif
()
endif
()
set_target_properties
(
gflags
${
opts
}
-
${
type
}
PROPERTIES COMPILE_DEFINITIONS
"
${
defines
}
"
gflags
${
opts
}
_
${
type
}
PROPERTIES COMPILE_DEFINITIONS
"
${
defines
}
"
OUTPUT_NAME
"gflags
${
opts
}${
type_suffix
}
"
VERSION
"
${
PACKAGE_VERSION
}
"
SOVERSION
"
${
PACKAGE_SOVERSION
}
"
)
if
(
HAVE_SHLWAPI_H
)
target_link_libraries
(
gflags
${
opts
}
-
${
type
}
shlwapi.lib
)
target_link_libraries
(
gflags
${
opts
}
_
${
type
}
shlwapi.lib
)
endif
()
list
(
APPEND TARGETS gflags
${
opts
}
_
${
type
}
)
# add convenience make target for build of both shared and static libraries
if
(
NOT GFLAGS_IS_SUBPROJECT
)
if
(
NOT TARGET gflags
${
opts
}
)
add_custom_target
(
gflags
${
opts
}
)
endif
()
add_dependencies
(
gflags
${
opts
}
gflags
${
opts
}
-
${
type
}
)
list
(
APPEND TARGETS gflags
${
opts
}
-
${
type
}
)
add_dependencies
(
gflags
${
opts
}
gflags
${
opts
}
_
${
type
}
)
endif
(
)
endif
()
endforeach
()
endif
()
endforeach
()
# add ALIAS target for use in super-project, prefer static over shared, single-threaded over multi-threaded
if
(
GFLAGS_IS_SUBPROJECT
)
foreach
(
type IN ITEMS static shared
)
foreach
(
opts IN ITEMS
"_nothreads"
""
)
if
(
TARGET gflags
${
opts
}
_
${
type
}
)
add_library
(
gflags ALIAS gflags
${
opts
}
_
${
type
}
)
break
()
endif
()
endforeach
()
if
(
TARGET gflags
)
break
()
endif
()
endforeach
()
endif
()
# ----------------------------------------------------------------------------
# installation rules
file
(
RELATIVE_PATH INSTALL_PREFIX_REL2CONFIG_DIR
"
${
CMAKE_INSTALL_PREFIX
}
/
${
CONFIG_INSTALL_DIR
}
"
"
${
CMAKE_INSTALL_PREFIX
}
"
)
configure_file
(
cmake/config.cmake.in
"
${
PROJECT_BINARY_DIR
}
/
${
PACKAGE_NAME
}
-config-install.cmake"
@ONLY
)
configure_file
(
cmake/version.cmake.in
"
${
PROJECT_BINARY_DIR
}
/
${
PACKAGE_NAME
}
-config-version.cmake"
@ONLY
)
install
(
TARGETS
${
TARGETS
}
DESTINATION
${
LIBRARY_INSTALL_DIR
}
EXPORT gflags-lib
)
if
(
BUILD_SHARED_LIBS AND INSTALL_SHARED_LIBS
)
foreach
(
opts IN ITEMS
""
_nothreads
)
if
(
BUILD_gflags
${
opts
}
_LIB
)
install
(
TARGETS gflags
${
opts
}
_shared DESTINATION
${
LIBRARY_INSTALL_DIR
}
EXPORT gflags-lib
)
endif
()
endforeach
()
endif
()
if
(
BUILD_STATIC_LIBS AND INSTALL_STATIC_LIBS
)
foreach
(
opts IN ITEMS
""
_nothreads
)
if
(
BUILD_gflags
${
opts
}
_LIB
)
install
(
TARGETS gflags
${
opts
}
_static DESTINATION
${
LIBRARY_INSTALL_DIR
}
EXPORT gflags-lib
)
endif
()
endforeach
()
endif
()
if
(
INSTALL_HEADERS
)
install
(
FILES
${
PUBLIC_HDRS
}
DESTINATION
${
INCLUDE_INSTALL_DIR
}
/
${
GFLAGS_INCLUDE_DIR
}
)
install
(
...
...
@@ -368,7 +507,7 @@ if (INSTALL_HEADERS)
FILES
"
${
PROJECT_BINARY_DIR
}
/
${
PACKAGE_NAME
}
-config-version.cmake"
DESTINATION
${
CONFIG_INSTALL_DIR
}
)
install
(
EXPORT gflags-lib DESTINATION
${
CONFIG_INSTALL_DIR
}
FILE
${
PACKAGE_NAME
}
-
export
.cmake
)
install
(
EXPORT gflags-lib DESTINATION
${
CONFIG_INSTALL_DIR
}
FILE
${
PACKAGE_NAME
}
-
targets
.cmake
)
if
(
UNIX
)
install
(
PROGRAMS src/gflags_completions.sh DESTINATION
${
RUNTIME_INSTALL_DIR
}
)
endif
()
...
...
@@ -377,7 +516,7 @@ endif ()
# ----------------------------------------------------------------------------
# support direct use of build tree
set
(
INSTALL_PREFIX_REL2CONFIG_DIR .
)
export
(
TARGETS
${
TARGETS
}
FILE
"
${
PROJECT_BINARY_DIR
}
/
${
PACKAGE_NAME
}
-
export
.cmake"
)
export
(
TARGETS
${
TARGETS
}
FILE
"
${
PROJECT_BINARY_DIR
}
/
${
PACKAGE_NAME
}
-
targets
.cmake"
)
export
(
PACKAGE gflags
)
configure_file
(
cmake/config.cmake.in
"
${
PROJECT_BINARY_DIR
}
/
${
PACKAGE_NAME
}
-config.cmake"
@ONLY
)
...
...
@@ -399,10 +538,13 @@ if (BUILD_PACKAGING)
"
\n
BUILD_SHARED_LIBS=ON"
"
\n
BUILD_STATIC_LIBS=OFF"
"
\n
INSTALL_HEADERS=OFF"
"
\n
INSTALL_SHARED_LIBS=ON"
"
\n
Recommended options for generation of development package:"
"
\n
BUILD_SHARED_LIBS=ON"
"
\n
BUILD_STATIC_LIBS=ON"
"
\n
INSTALL_HEADERS=ON"
)
"
\n
INSTALL_HEADERS=ON"
"
\n
INSTALL_SHARED_LIBS=ON"
"
\n
INSTALL_STATIC_LIBS=ON"
)
endif
()
# default package generators
...
...
cmake/config.cmake.in
View file @
389ef3f7
## gflags CMake configuration file
# library version information
set (@PACKAGE_
NAME
@_VERSION_STRING "@PACKAGE_VERSION@")
set (@PACKAGE_
NAME
@_VERSION_MAJOR @PACKAGE_VERSION_MAJOR@)
set (@PACKAGE_
NAME
@_VERSION_MINOR @PACKAGE_VERSION_MINOR@)
set (@PACKAGE_
NAME
@_VERSION_PATCH @PACKAGE_VERSION_PATCH@)
set (@PACKAGE_
PREFIX
@_VERSION_STRING "@PACKAGE_VERSION@")
set (@PACKAGE_
PREFIX
@_VERSION_MAJOR @PACKAGE_VERSION_MAJOR@)
set (@PACKAGE_
PREFIX
@_VERSION_MINOR @PACKAGE_VERSION_MINOR@)
set (@PACKAGE_
PREFIX
@_VERSION_PATCH @PACKAGE_VERSION_PATCH@)
# import targets
include ("${CMAKE_CURRENT_LIST_DIR}/@PACKAGE_NAME@-
export
.cmake")
include ("${CMAKE_CURRENT_LIST_DIR}/@PACKAGE_NAME@-
targets
.cmake")
# installation prefix
get_filename_component (CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
...
...
@@ -18,94 +18,151 @@ get_filename_component (_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_PREF
# Newer versions of CMake set the INTERFACE_INCLUDE_DIRECTORIES property
# of the imported targets. It is hence not necessary to add this path
# manually to the include search path for targets which link to gflags.
set (@PACKAGE_
NAME
@_INCLUDE_DIR "${_INSTALL_PREFIX}/@INCLUDE_INSTALL_DIR@")
set (@PACKAGE_
PREFIX
@_INCLUDE_DIR "${_INSTALL_PREFIX}/@INCLUDE_INSTALL_DIR@")
# default settings
if (NOT DEFINED @PACKAGE_NAME@_SHARED)
if (TARGET @PACKAGE_NAME@-static OR TARGET @PACKAGE_NAME@_nothreads-static)
set (@PACKAGE_NAME@_SHARED FALSE)
if (@PACKAGE_NAME@_FIND_COMPONENTS)
foreach (@PACKAGE_NAME@_FIND_COMPONENT IN LISTS @PACKAGE_NAME@_FIND_COMPONENTS)
if (@PACKAGE_NAME@_FIND_REQUIRED_${@PACKAGE_NAME@_FIND_COMPONENT} AND NOT TARGET @PACKAGE_NAME@_${@PACKAGE_NAME@_FIND_COMPONENT})
message (FATAL_ERROR "Package @PACKAGE_NAME@ was installed without required component ${@PACKAGE_NAME@_FIND_COMPONENT}!")
endif ()
endforeach ()
list (GET @PACKAGE_NAME@_FIND_COMPONENTS 0 @PACKAGE_NAME@_FIND_COMPONENT)
else ()
set (@PACKAGE_NAME@_FIND_COMPONENT)
endif ()
# default settings of @PACKAGE_PREFIX@_SHARED and @PACKAGE_PREFIX@_NOTHREADS
#
# It is recommended to use either one of the following find_package commands
# instead of setting the @PACKAGE_PREFIX@_(SHARED|NOTHREADS) variables:
# - find_package(@PACKAGE_NAME@ REQUIRED)
# - find_package(@PACKAGE_NAME@ COMPONENTS nothreads_static)
# - find_package(@PACKAGE_NAME@ COMPONENTS nothreads_shared)
# - find_package(@PACKAGE_NAME@ COMPONENTS static)
# - find_package(@PACKAGE_NAME@ COMPONENTS shared)
if (NOT DEFINED @PACKAGE_PREFIX@_SHARED)
if (DEFINED @PACKAGE_NAME@_SHARED)
set (@PACKAGE_PREFIX@_SHARED ${@PACKAGE_NAME@_SHARED})
elseif (@PACKAGE_NAME@_FIND_COMPONENT)
if (@PACKAGE_NAME@_FIND_COMPONENT MATCHES "shared")
set (@PACKAGE_PREFIX@_SHARED TRUE)
else ()
set (@PACKAGE_NAME@_SHARED TRUE)
set (@PACKAGE_PREFIX@_SHARED FALSE)
endif ()
elseif (TARGET @PACKAGE_NAME@_shared OR TARGET @PACKAGE_NAME@_nothreads_shared)
set (@PACKAGE_PREFIX@_SHARED TRUE)
else ()
set (@PACKAGE_PREFIX@_SHARED FALSE)
endif ()
endif ()
if (NOT DEFINED @PACKAGE_NAME@_NOTHREADS)
if (TARGET @PACKAGE_NAME@-static OR TARGET @PACKAGE_NAME@-shared)
set (@PACKAGE_NAME@_NOTHREADS FALSE)
if (NOT DEFINED @PACKAGE_PREFIX@_NOTHREADS)
if (DEFINED @PACKAGE_NAME@_NOTHREADS)
set (@PACKAGE_PREFIX@_NOTHREADS ${@PACKAGE_NAME@_NOTHREADS})
elseif (@PACKAGE_NAME@_FIND_COMPONENT)
if (@PACKAGE_NAME@_FIND_COMPONENT MATCHES "nothreads")
set (@PACKAGE_PREFIX@_NOTHREADS TRUE)
else ()
set (@PACKAGE_NAME@_NOTHREADS TRUE)
set (@PACKAGE_PREFIX@_NOTHREADS FALSE)
endif ()
elseif (TARGET @PACKAGE_NAME@_static OR TARGET @PACKAGE_NAME@_shared)
set (@PACKAGE_PREFIX@_NOTHREADS FALSE)
else ()
set (@PACKAGE_PREFIX@_NOTHREADS TRUE)
endif ()
endif ()
# choose imported library target
if (NOT @PACKAGE_NAME@_TARGET)
if (@PACKAGE_NAME@_SHARED)
if (@PACKAGE_NAME@_NOTHREADS)
set (@PACKAGE_NAME@_TARGET @PACKAGE_NAME@_nothreads-shared)
if (NOT @PACKAGE_PREFIX@_TARGET)
if (@PACKAGE_NAME@_TARGET)
set (@PACKAGE_PREFIX@_TARGET ${@PACKAGE_NAME@_TARGET})
elseif (@PACKAGE_PREFIX@_SHARED)
if (@PACKAGE_PREFIX@_NOTHREADS)
set (@PACKAGE_PREFIX@_TARGET @PACKAGE_NAME@_nothreads_shared)
else ()
set (@PACKAGE_
NAME@_TARGET @PACKAGE_NAME@-
shared)
set (@PACKAGE_
PREFIX@_TARGET @PACKAGE_NAME@_
shared)
endif ()
else ()
if (@PACKAGE_
NAME
@_NOTHREADS)
set (@PACKAGE_
NAME@_TARGET @PACKAGE_NAME@_nothreads-
static)
if (@PACKAGE_
PREFIX
@_NOTHREADS)
set (@PACKAGE_
PREFIX@_TARGET @PACKAGE_NAME@_nothreads_
static)
else ()
set (@PACKAGE_
NAME@_TARGET @PACKAGE_NAME@-
static)
set (@PACKAGE_
PREFIX@_TARGET @PACKAGE_NAME@_
static)
endif ()
endif ()
endif ()
if (NOT TARGET ${@PACKAGE_
NAME
@_TARGET})
message (FATAL_ERROR "Your @PACKAGE_NAME@ installation does not contain a ${@PACKAGE_
NAME
@_TARGET} library target!"
" Try a different combination of @PACKAGE_
NAME@_SHARED and @PACKAGE_NAME
@_NOTHREADS.")
if (NOT TARGET ${@PACKAGE_
PREFIX
@_TARGET})
message (FATAL_ERROR "Your @PACKAGE_NAME@ installation does not contain a ${@PACKAGE_
PREFIX
@_TARGET} library target!"
" Try a different combination of @PACKAGE_
PREFIX@_SHARED and @PACKAGE_PREFIX
@_NOTHREADS.")
endif ()
# add more convenient "@PACKAGE_NAME@" import target
if (NOT TARGET @PACKAGE_NAME@)
if (@PACKAGE_
NAME
@_SHARED)
if (@PACKAGE_
PREFIX
@_SHARED)
add_library (@PACKAGE_NAME@ SHARED IMPORTED)
else ()
add_library (@PACKAGE_NAME@ STATIC IMPORTED)
endif ()
# INTERFACE_INCLUDE_DIRECTORIES
get_target_property (_@PACKAGE_NAME@_INCLUDES ${@PACKAGE_NAME@_TARGET} INTERFACE_INCLUDE_DIRECTORIES)
if (_@PACKAGE_NAME@_INCLUDES)
set_target_properties(@PACKAGE_NAME@ PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${_@PACKAGE_NAME@_INCLUDES}"
# copy INTERFACE_* properties
foreach (_@PACKAGE_PREFIX@_PROPERTY_NAME IN ITEMS
COMPILE_DEFINITIONS
COMPILE_FEATURES
COMPILE_OPTIONS
INCLUDE_DIRECTORIES
LINK_LIBRARIES
POSITION_INDEPENDENT_CODE
)
endif ()
unset (_@PACKAGE_NAME@_INCLUDES)
# set configuration specific properties
get_target_property (_@PACKAGE_NAME@_CONFIGURATIONS ${@PACKAGE_NAME@_TARGET} IMPORTED_CONFIGURATIONS)
set_target_properties (@PACKAGE_NAME@ PROPERTIES IMPORTED_CONFIGURATIONS "${_@PACKAGE_NAME@_CONFIGURATIONS}")
foreach (_@PACKAGE_NAME@_CONFIG IN LISTS _@PACKAGE_NAME@_CONFIGURATIONS)
# IMPORTED_LOCATION_<config>
get_target_property (_@PACKAGE_NAME@_LOCATION ${@PACKAGE_NAME@_TARGET} IMPORTED_LOCATION_${_@PACKAGE_NAME@_CONFIG})
if (_@PACKAGE_NAME@_LOCATION)
get_target_property (_@PACKAGE_PREFIX@_PROPERTY_VALUE ${@PACKAGE_PREFIX@_TARGET} INTERFACE_${_@PACKAGE_PREFIX@_PROPERTY_NAME})
if (_@PACKAGE_PREFIX@_PROPERTY_VALUE)
set_target_properties(@PACKAGE_NAME@ PROPERTIES
I
MPORTED_LOCATION_${_@PACKAGE_NAME@_CONFIG} "${_@PACKAGE_NAME@_LOCATION
}"
I
NTERFACE_${_@PACKAGE_PREFIX@_PROPERTY_NAME} "${_@PACKAGE_PREFIX@_PROPERTY_VALUE
}"
)
endif ()
unset (_@PACKAGE_NAME@_LOCATION)
# IMPORTED_LINK_INTERFACE_LANGUAGES_<config> (static)
get_target_property (_@PACKAGE_NAME@_LANGUAGES ${@PACKAGE_NAME@_TARGET} IMPORTED_LINK_INTERFACE_LANGUAGES_${_@PACKAGE_NAME@_CONFIG})
if (_@PACKAGE_NAME@_LANGUAGES)
set_target_properties(@PACKAGE_NAME@ PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES_${_@PACKAGE_NAME@_CONFIG} "${_@PACKAGE_NAME@_LANGUAGES}"
endforeach ()
# copy IMPORTED_*_<CONFIG> properties
get_target_property (_@PACKAGE_PREFIX@_CONFIGURATIONS ${@PACKAGE_PREFIX@_TARGET} IMPORTED_CONFIGURATIONS)
set_target_properties (@PACKAGE_NAME@ PROPERTIES IMPORTED_CONFIGURATIONS "${_@PACKAGE_PREFIX@_CONFIGURATIONS}")
foreach (_@PACKAGE_PREFIX@_PROPERTY_NAME IN ITEMS
LOCATION
LINK_DEPENDENT_LIBRARIES
LINK_INTERFACE_LIBRARIES
LINK_INTERFACE_LANGUAGES
LINK_INTERFACE_MULTIPLICITY
NO_SONAME
SONAME
)
endif ()
unset (_@PACKAGE_NAME@_LANGUAGES)
# IMPORTED_SONAME_<config> (shared)
get_target_property (_@PACKAGE_NAME@_SONAME ${@PACKAGE_NAME@_TARGET} IMPORTED_SONAME_${_@PACKAGE_NAME@_CONFIG})
if (_@PACKAGE_NAME@_SONAME)
foreach (_@PACKAGE_PREFIX@_CONFIG IN LISTS _@PACKAGE_PREFIX@_CONFIGURATIONS)
get_target_property (_@PACKAGE_PREFIX@_PROPERTY_VALUE ${@PACKAGE_PREFIX@_TARGET} IMPORTED_${_@PACKAGE_PREFIX@_PROPERTY_NAME}_${_@PACKAGE_PREFIX@_CONFIG})
if (_@PACKAGE_PREFIX@_PROPERTY_VALUE)
set_target_properties(@PACKAGE_NAME@ PROPERTIES
IMPORTED_SONAME_${_@PACKAGE_NAME@_CONFIG} "${_@PACKAGE_NAME@_SONAM
E}"
IMPORTED_${_@PACKAGE_PREFIX@_PROPERTY_NAME}_${_@PACKAGE_PREFIX@_CONFIG} "${_@PACKAGE_PREFIX@_PROPERTY_VALU
E}"
)
endif ()
unset (_@PACKAGE_NAME@_SONAME)
endforeach ()
unset (_@PACKAGE_NAME@_CONFIGURATIONS)
endforeach ()
unset (_@PACKAGE_PREFIX@_CONFIGURATIONS)
unset (_@PACKAGE_PREFIX@_CONFIG)
unset (_@PACKAGE_PREFIX@_PROPERTY_NAME)
unset (_@PACKAGE_PREFIX@_PROPERTY_VALUE)
endif ()
# alias for default import target to be compatible with older CMake package configurations
set (@PACKAGE_NAME@_LIBRARIES "${@PACKAGE_NAME@_TARGET}")
set (@PACKAGE_PREFIX@_LIBRARIES "${@PACKAGE_PREFIX@_TARGET}")
# set @PACKAGE_NAME@_* variables for backwards compatibility
if (NOT "^@PACKAGE_NAME@$" STREQUAL "^@PACKAGE_PREFIX@$")
foreach (_@PACKAGE_PREFIX@_VARIABLE IN ITEMS
VERSION_STRING
VERSION_MAJOR
VERSION_MINOR
VERSION_PATCH
INCLUDE_DIR
LIBRARIES
TARGET
)
set (@PACKAGE_NAME@_${_@PACKAGE_PREFIX@_VARIABLE} "${@PACKAGE_PREFIX@_${_@PACKAGE_PREFIX@_VARIABLE}}")
endforeach ()
unset (_@PACKAGE_PREFIX@_VARIABLE)
endif ()
# unset private variables
unset (@PACKAGE_NAME@_FIND_COMPONENT)
unset (_INSTALL_PREFIX)
cmake/utils.cmake
View file @
389ef3f7
...
...
@@ -11,7 +11,7 @@ macro (bool_to_int VAR)
endmacro
()
# ----------------------------------------------------------------------------
## Extract version numbers from version string
.
## Extract version numbers from version string
function
(
version_numbers version major minor patch
)
if
(
version MATCHES
"([0-9]+)(
\\
.[0-9]+)?(
\\
.[0-9]+)?(rc[1-9][0-9]*|[a-z]+)?"
)
if
(
CMAKE_MATCH_1
)
...
...
@@ -41,6 +41,73 @@ function (version_numbers version major minor patch)
set
(
"
${
patch
}
"
"
${
_patch
}
"
PARENT_SCOPE
)
endfunction
()
# ----------------------------------------------------------------------------
## Determine if cache entry exists
macro
(
gflags_is_cached retvar varname
)
if
(
DEFINED
${
varname
}
)
get_property
(
${
retvar
}
CACHE
${
varname
}
PROPERTY TYPE SET
)
else
()
set
(
${
retvar
}
FALSE
)
endif
()
endmacro
()
# ----------------------------------------------------------------------------
## Add gflags configuration variable
#
# The default value of the (cached) configuration value can be overridden either
# on the CMake command-line or the super-project by setting the GFLAGS_<varname>
# variable. When gflags is a subproject of another project (GFLAGS_IS_SUBPROJECT),
# the variable is not added to the CMake cache. Otherwise it is cached.
macro
(
gflags_define type varname docstring default
)
if
(
ARGC GREATER 5
)
message
(
FATAL_ERROR
"gflags_variable: Too many macro arguments"
)
endif
()
if
(
NOT DEFINED GFLAGS_
${
varname
}
)
if
(
GFLAGS_IS_SUBPROJECT AND ARGC EQUAL 5
)
set
(
GFLAGS_
${
varname
}
"
${
ARGV4
}
"
)
else
()
set
(
GFLAGS_
${
varname
}
"
${
default
}
"
)
endif
()
endif
()
if
(
GFLAGS_IS_SUBPROJECT
)
if
(
NOT DEFINED
${
varname
}
)
set
(
${
varname
}
"
${
GFLAGS_
${
varname
}}
"
)
endif
()
else
()
set
(
${
varname
}
"
${
GFLAGS_
${
varname
}}
"
CACHE
${
type
}
"
${
docstring
}
"
)
endif
()
endmacro
()
# ----------------------------------------------------------------------------
## Set property of cached gflags configuration variable
macro
(
gflags_property varname property value
)
gflags_is_cached
(
_cached
${
varname
}
)
if
(
_cached
)
if
(
property STREQUAL ADVANCED
)
if
(
${
value
}
)
mark_as_advanced
(
FORCE
${
varname
}
)
else
()
mark_as_advanced
(
CLEAR
${
varname
}
)
endif
()
else
()
set_property
(
CACHE
${
varname
}
PROPERTY
"
${
property
}
"
"
${
value
}
"
)
endif
()
endif
()
unset
(
_cached
)
endmacro
()
# ----------------------------------------------------------------------------
## Modify value of gflags configuration variable
macro
(
gflags_set varname value
)
gflags_is_cached
(
_cached
${
varname
}
)
if
(
_cached
)
set_property
(
CACHE
${
varname
}
PROPERTY VALUE
"
${
value
}
"
)
else
()
set
(
${
varname
}
"
${
value
}
"
)
endif
()
unset
(
_cached
)
endmacro
()
# ----------------------------------------------------------------------------
## Configure public header files
function
(
configure_headers out
)
...
...
test/CMakeLists.txt
View file @
389ef3f7
...
...
@@ -22,9 +22,9 @@ else ()
set
(
type static
)
endif
()
if
(
BUILD_gflags_LIB
)
link_libraries
(
gflags
-
${
type
}
)
link_libraries
(
gflags
_
${
type
}
)
else
()
link_libraries
(
gflags_nothreads
-
${
type
}
)
link_libraries
(
gflags_nothreads
_
${
type
}
)
endif
()
# ----------------------------------------------------------------------------
...
...
test/nc/CMakeLists.txt
View file @
389ef3f7
## gflags negative compilation tests
cmake_minimum_required
(
VERSION 2.8
)
cmake_minimum_required
(
VERSION 2.8
.12 FATAL_ERROR
)
if
(
NOT TEST_NAME
)
message
(
FATAL_ERROR
"Missing TEST_NAME CMake flag"
)
...
...
@@ -13,4 +13,4 @@ find_package (gflags REQUIRED)
include_directories
(
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/.."
)
add_definitions
(
-DTEST_
${
TEST_NAME_UPPER
}
)
add_executable
(
gflags_
${
TEST_NAME
}
gflags_nc.cc
)
target_link_libraries
(
gflags_
${
TEST_NAME
}
${
gflags_LIBRARIES
}
)
target_link_libraries
(
gflags_
${
TEST_NAME
}
gflags
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment