Commit 21c7bcd8 authored by randomguy3's avatar randomguy3 Committed by Andreas Schuh

Fix CMake macro special variable usage (#216)

The argument-related variables in a macro body are not real variables,
but special substitutions. They cannot be directly referred to by name,
only expanded.
parent 95ffb27c
...@@ -59,11 +59,13 @@ endmacro () ...@@ -59,11 +59,13 @@ endmacro ()
# variable. When gflags is a subproject of another project (GFLAGS_IS_SUBPROJECT), # 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. # the variable is not added to the CMake cache. Otherwise it is cached.
macro (gflags_define type varname docstring default) macro (gflags_define type varname docstring default)
if (ARGC GREATER 5) # note that ARGC must be expanded here, as it is not a "real" variable
# (see the CMake documentation for the macro command)
if ("${ARGC}" GREATER 5)
message (FATAL_ERROR "gflags_variable: Too many macro arguments") message (FATAL_ERROR "gflags_variable: Too many macro arguments")
endif () endif ()
if (NOT DEFINED GFLAGS_${varname}) if (NOT DEFINED GFLAGS_${varname})
if (GFLAGS_IS_SUBPROJECT AND ARGC EQUAL 5) if (GFLAGS_IS_SUBPROJECT AND "${ARGC}" EQUAL 5)
set (GFLAGS_${varname} "${ARGV4}") set (GFLAGS_${varname} "${ARGV4}")
else () else ()
set (GFLAGS_${varname} "${default}") set (GFLAGS_${varname} "${default}")
...@@ -83,7 +85,9 @@ endmacro () ...@@ -83,7 +85,9 @@ endmacro ()
macro (gflags_property varname property value) macro (gflags_property varname property value)
gflags_is_cached (_cached ${varname}) gflags_is_cached (_cached ${varname})
if (_cached) if (_cached)
if (property STREQUAL ADVANCED) # note that property must be expanded here, as it is not a "real" variable
# (see the CMake documentation for the macro command)
if ("${property}" STREQUAL "ADVANCED")
if (${value}) if (${value})
mark_as_advanced (FORCE ${varname}) mark_as_advanced (FORCE ${varname})
else () else ()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment