#吐槽#
你应该加上链接的:
https://github.com/gflags/gflags/blob/master/src/gflags_declare.h.in#L43我翻了一下源码,在根目录的 CMakeLists (
https://github.com/gflags/gflags/blob/master/CMakeLists.txt#L148 )里有:
可以看到工程名叫 "gflags":
set (PACKAGE_NAME "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)
然后尝试定了一个 GFLAGS_NAMESPACE_SECONDARY 变量,是一个列表,目测使很多 namespace 的候选项(我也看不懂):
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 \";\").")
endif ()
foreach (ns IN LISTS GFLAGS_NAMESPACE_SECONDARY)
if (NOT ns MATCHES "^[a-zA-Z][a-zA-Z0-9_]*$")
message (FATAL_ERROR "GFLAGS_NAMESPACE contains invalid namespace identifier: ${ns}")
endif ()
endforeach ()
最后从里面选了第一个值作为 GFLAGS_NAMESPACE
list (GET GFLAGS_NAMESPACE_SECONDARY 0 GFLAGS_NAMESPACE)
list (REMOVE_AT GFLAGS_NAMESPACE_SECONDARY 0)