【问题标题】:Set mutually exclusive variables in CMake?在 CMake 中设置互斥变量?
【发布时间】:2020-10-31 15:04:09
【问题描述】:

我有一个项目,我根据用户的兴趣使用 2 个不同的库。在生成时,我想让用户选择要构建的库。到目前为止,我使用了这样的东西:

set(BUILD_WITH_IR  OFF CACHE BOOL "build ir")
set(BUILD_WITH_TOF OFF CACHE BOOL "build tof")

问题:

我在 CMake GUI 中看到 2 个复选框可供选择。我选择一个并单击配置。 CMake 将两个复选框都重置为 OFF(取消选中)。可以理解,因为每次 CMake 配置时两者都设置为 OFF。

我希望用户一次只能选择一个选项。根据用户选择,我配置我的项目的其余部分。

如何使这些变量互斥?

【问题讨论】:

  • ?重点是什么?使用set_property(CACHE BUILD_WITH PROPERTY STRINGS nothing IR TOF) 执行set(BUILD_WITH nothing CACHE STRING "build with that thung")。使用多个布尔选项创建多选项很奇怪...blog.kitware.com/… 无论如何,使用cmake_dependent_option 应该是可行的。

标签: cmake cmake-gui


【解决方案1】:

这看起来像是一个带有多个值的单个选项,而不是两个独立的不相关选项。试试:

 set(YOURLIB_BUILD_WITH "NOTHING" CACHE STRING "build with that thing")
 set_property(CACHE YOURLIB_BUILD_WITH PROPERTY STRINGS "NOTHING" "IR" "TOF")

【讨论】:

  • 也许您也可以使用 cmake_dependent_option 添加如何操作。会帮助别人。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多