gpt4 book ai didi

cmake - CMake 中的 bool 变量取反?

转载 作者:行者123 更新时间:2023-12-03 00:11:09 42 4
gpt4 key购买 nike

假设我在 CMake 中设置以下变量:

set(foo TRUE)

现在,我想用 foo 相反的 bool 值定义一个 bar 变量(换句话说:在这种情况下,我想要 bar code> 为 FALSE 或等效项,例如 false0)。完成此操作的一种方法是:

if(foo)
set(bar FALSE)
else()
set(bar TRUE)
endif()

但是,这有点冗长。 如何用更少的行数完成同样的事情

<小时/>

注释

我尝试使用生成器表达式,但它们似乎在 set 命令中不起作用:

set(bar $<NOT:${foo}>)

甚至

set(bar $<NOT:foo>)

不会产生期望的结果。

最佳答案

no way to evaluate an expression .

如果你经常需要它,你可以编写一个辅助函数来处理反转。调用签名很笨拙,因为您必须传递变量名称及其值。

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}")

关于cmake - CMake 中的 bool 变量取反?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41773161/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com