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 中的布尔变量取反? 的相关文章

  • 在 MAC OSX 上使用 CMake 生成 .bundle 文件

    我想生成一个可执行文件 bundle文件于Mac OSX 10 6 8 using CMake 我的 CMakeLists txt 文件如下所示 cmake minimum required VERSION 2 8 PROJECT TEST
  • 针对 dll/lib 的 cmake 链接

    我的 cmake 的输出是一个静态库 我正在这样创建它 add library myMainLib STATIC BACKEND SOURCES 当我尝试让 myMainLib 链接到第三方 lib dll 时 出现了问题 dll 文件将在
  • 在cmake中设置PKG_CONFIG_PATH

    我已经在本地构建了 opencv 并将其安装到本地目录 不是系统默认目录 opencv pc存在于该本地文件夹中的 pkgconfig 文件夹下 我怎样才能找到这个opencv pc来自 cmake 因为我想从我的程序链接并包含 openc
  • 在 CMake 中,CHECK_INCLUDE_FILE_CXX 如何工作?

    以下代码不打印任何内容 CHECK INCLUDE FILE CXX glog logging h GLOG INCLUDE IF GLOG INCLUDE MESSAGE YY ENDIF GLOG INCLUDE 但我设置了以下环境变量
  • 如何使用 CMake 安装文件层次结构?

    我使用以下方法创建了文件列表 file GLOB RECURSE DEPLOY FILES PROJECT SOURCE DIR install 我想将所有这些文件安装在 usr myproject 但我想维护已安装文件夹上的文件树 ins
  • Clang 与 CLion:无法获取编译器信息

    我尝试通过更改在 CLion 中从 gcc 切换到 clang工具链偏爱 但现在 cmake 失败并显示以下内容 Cannot get compiler information Compiler exited with error code
  • 如何防止 CMake 在构建时(而不是安装时)为共享库创建符号链接?

    我正在使用 CMake 在 Linux 上使用 Bullet3 构建一个项目 在构建整个解决方案时 它会构建附加了 SOVERSION 的 Bullet 输出库 并创建一个不带版本的符号链接 对于我的特定场景 我不喜欢这种行为 并且我不想编
  • 如何将最新的 Windows SDK 版本传递给 CMake?

    如何将最新的 Windows SDK 版本传递给 CMake 这样我就不需要进入 Visual Studio 并从配置属性 常规中手动放置它 我在互联网上搜索 找到了 CMAKE SYSTEM VERSION 变量 并且尝试使用 set C
  • 如何将新的 Visual Studio 2017 cmake 功能与 gitlab CI 运行程序结合使用

    我以直接的方式为 Linux 设置了 gitlab ci runner cmake make make test 大致如下 variables GIT SUBMODULE STRATEGY recursive stages build te
  • 如何在Linux上构建GLFW3项目?

    我已经使用 cmake 和 make 编译了 glfw3 和包含的示例 没有出现任何问题 开始编写我的第一个项目 作为 opengl 和 glfw 的新手 并且对 C 和 CMake 没有经验 我正在努力理解示例构建文件 甚至要链接哪些库和
  • 如何告诉 CMake 将构建文件放在哪里?

    我想告诉 CMake 将文件和文件夹输出到不同的文件夹而不是当前文件夹 我在下面讨论的是 CMake 生成的文件 文件 CMakeCache txt 目录 CMakeFiles 文件 生成文件 目录 bin 文件 cmake install
  • Cmake选项默认值

    如果我有一个 CMakeLists txt 文件 cmake minimum required VERSION 2 8 OPTION FOO Foo Option OFF MESSAGE FOO FOO 然后我调用 cmake 得到以下输出
  • CMake(Ninja 后端)使用 /MT 编译

    我有一个类似的问题CMake 使用 MT 而不是 MD 进行编译 https stackoverflow com questions 14172856 cmake compile with mt instead of md但有一些差异 我正
  • 带包装的 CMAKE RPATH

    我正在使用 cmake 创建包 我有以下结构 bin bin1 lib lib1 lib2 其中lib1和lib2是外部动态库 如何设置 RPATH 以便它自动与 lib1 和 lib2 链接 我也在这方面对 cmake 很感兴趣 Cmak
  • CMake - 未定义参考

    我正在尝试将 gtest 包含到我的项目中 问题是我在 GTest 中收到未定义的引用错误 我正在尝试在 Gtest 中测试 Node 类 在节点的构造函数中 我使用类记录器 尽管我已将库记录器添加到 gtest target 中 但我仍然
  • CMake:如何更改单个目标的编译器

    我有使用交叉编译器的嵌入式项目 我想介绍一下Google测试 用原生GCC编译器编译 另外使用 CTC 编译器构建一些单元测试目标 Briefly 我有 3 个不同的目标并用 3 个不同的编译器编译它们 如何表达它CMakeLists tx
  • CMakeLists.txt:30(项目)处的 CMake 错误:找不到 CMAKE_C_COMPILER

    我正在尝试使用 CMake 制作 Visual Studio 解决方案来编译最新版本的 aseprite 并且 CMake 不断向我提供 No CMAKE C COMPILER could be found No CMAKE CXX COM
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 如何配置 cmake 以链接到预构建的共享库?

    我有一个项目 在子目录中包含 opencv 的预构建版本 例如 我的项目 CMakeLists txt src 第三者 CMakeLists txt 开放式CV 包括 库 我想链接位于third party目录中的opencv版本 我的问题

随机推荐

  • 从 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