CMake 中的布尔变量取反?

2024-01-10

假设我在 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(使用前将#替换为@)

CMake 中的布尔变量取反? 的相关文章

随机推荐

  • 从 dict 创建 python pandas 系列,分配索引的问题

    我正在练习我的 Python 技能并想创建系列 我想使用字典 但是当我想要该系列的索引时 它向我显示 NaN 我现在不知道是什么原因 初始字典具有键和值的字符串值 仅包含 8 个元素 country capital dict Germany
  • Vue.js 组件彼此不独立

    我期望该组件彼此独立并显示独立的计数器 但这显然不是正在发生的事情 HTML div div
  • 如何在 Android Studio 中生成具有自定义名称的输出 APK 文件?

    我想使用自定义名称生成输出 apk 文件 例如 默认情况下 android studio 生成 app debug apk 文件 但我希望它是 MyAppName myCurrentProdFlavour vMyVersionName ap
  • SQLite 不区分重音的搜索

    有没有办法在 SQLite 中执行不区分重音的 LIKE 查询 例如 这个查询 SELECT FROM users WHERE name LIKE Andre 会返回 Andr the Giant Andre Agassi etc 如果有什
  • 如何为Postman的binary类型的请求体构建RestTemplate?

    我正在尝试使用 RestTemplate 调用第三方服务 但是当我尝试通过 Java 代码调用该服务时 它会抛出 BadRequest 错误 由于我无法弄清楚如何为 API 构建 Resttemplate 因此我在这里请求有关如何为此类请求
  • 计算中常用值的预定义 - 它会改变什么吗?

    我自动生成 C 代码来计算大型表达式 并尝试通过简单的示例来弄清楚在单独的变量中预定义某些子部分是否有意义 举一个简单的例子 假设我们计算以下形式的内容 include
  • 如何在 html 中的 href 路径中使用变量

    我正在对我的 css 文件进行版本控制 以在需要时 强制浏览器 清除缓存
  • 如何使用 npm 在 64 位系统上构建 32 位二进制文​​件?

    我正在开发一个应用程序 我计划使用它来分发节点 webkit https github com rogerwang node webkit 它在 Windows 上仅具有 32 位二进制文 件 我的操作系统是 Windows 7 Ultim
  • 如何创建动态“包含或喜欢”表达式以与针对 OData 服务的 Linq 一起使用

    我尝试使用 System Linq Expressions Expression WPF c 4 0 创建动态查询工具 它针对 OData 服务运行 到目前为止 只要我限制构建 Equal GreaterThan 等选项的条件 一切都正常
  • Django APIClient 登录不起作用

    我在单元测试中使用 Django Rest Framework API 进行身份验证时遇到问题 通过浏览器访问系统时 系统按预期工作 然而 当我在以下端点向以下类发送 put 请求时 我收到 401 HTTP 状态 class UserDe
  • vb6 winhhtp:安全通道支持中发生错误

    我编写了一个 VB6 程序 它使用 winhttp dll 向远程服务器发送消息或从远程服务器接收消息 它在各种操作系统中都运行良好 Windows 2000 WinXP Win7 Win8 最近服务器提供商通知我他们将 逐步停止对 SHA
  • memcached可以用来加锁吗?

    memcached可用于缓存静态数据 这可以减少数据库查找 并且通常不会memcached get id and memcached set id 但是 将其用于锁定机制可以吗 做memcache set and memcached get
  • php 中的友元函数?

    php是否像c 一样支持友元函数 您很可能指的是类 变量范围 在 PHP 中 你有 public private 受保护的 But not friend能见度 这protectedwhile 当要使对象的成员仅对其他扩展 继承对象可见时使用
  • 这个 Objective-C/XCode 注释是什么 // [START_EXCLUDE]

    查看 iOS 上 GCM 通知的示例代码 https github com googlesamples google services blob master ios gcm GcmExample AppDelegate m L31 htt
  • 在 Yii 中何时使用组件以及何时使用扩展?

    我对 protected 中组件和扩展文件夹的用途有点困惑 请澄清 根据我对 Yii 的一点经验 组件是可以帮助您根据模型编写业务逻辑的类 您肯定不想在控制器中编写所有工作 那么您需要组件来分发代码并在控制器中调用它 扩展就像库一样 基本上
  • 使用 fxml (scenebuilder)制作的进度条来使用方法中的值[重复]

    这个问题在这里已经有答案了 我希望进度条显示返回双值的方法的值 但它不起作用 但我认为这不是主要问题 即使我只使用特定的数字 它也不起作用 请帮助我 提前致谢 这是一个具体的问题 所以我搜索了 cery 很长时间没有结果 所以如果你知道更好
  • nAnt 删除超过 7 天的文件

    我想创建一个目标来清理特定文件夹中超过 7 天的日志文件 当我尝试在文件集中放入 日期 元素时出现错误 我该怎么办
  • 更新单个表的多行

    我需要更新超过 60k 行的表的每一行 目前我正在这样做 public void updateRank Map
  • 超类型-子类型数据库设计

    我有一个关于关系数据库中超类型子类型设计的问题 如果我有一个带有两个子类型表的超类型 我会将与两个子类型表的 PK 相关的超类型的 PK 作为 FK 假设我有这样的事情 Type 类型 ID PK 超级类型 身份验证 类型ID FK Sub
  • CMake 中的布尔变量取反?

    假设我在 CMake 中设置以下变量 set foo TRUE 现在 我想定义一个bar具有相反布尔值的变量foo 换句话说 在这种情况下 我想要bar to be FALSE 或等价物 例如false or 0 完成此操作的一种方法是 i