假设我在 CMake 中设置以下变量:
set(foo TRUE)
现在,我想定义一个bar
具有相反布尔值的变量foo
(换句话说:在这种情况下,我想要bar
to be FALSE
,或等价物,例如false
or 0
)。完成此操作的一种方法是:
if(foo)
set(bar FALSE)
else()
set(bar TRUE)
endif()
然而,这有点冗长。我怎样才能用更少的代码完成同样的事情?
Notes
我尝试使用生成器表达式,但它们似乎不适用于set
命令:
set(bar $<NOT:${foo}>)
Or even
set(bar $<NOT:foo>)
不会产生想要的结果。
有无法评估表达式 http://public.kitware.com/pipermail/cmake/2006-March/008755.html.
如果经常需要,可以编写一个辅助函数来处理反转。调用签名很笨拙,因为您必须传递变量名称及其值。
cmake_minimum_required(VERSION 3.0)
project(InvertFunction)
function (invertBoolean varName varValue)
if(${varValue})
set(${varName} false PARENT_SCOPE)
else()
set(${varName} true PARENT_SCOPE)
endif()
endfunction()
set(foo true)
invertBoolean("foo" foo)
message("Invert foo: ${foo}")
set(bar false)
invertBoolean("bar" bar)
message("Invert bar: ${bar}")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)