cmake - CMake 变量的 "option"和 "set CACHE BOOL"有什么区别?

标签 cmake boolean global-variables cmake-gui

以下两者有什么区别吗?

set(FOO true CACHE BOOL "description")

option(FOO "description" ON)

文档:set -option

背景:即使我已经使用 CMake 一段时间了,我今天也只注意到 option 命令,因此我一直在使用 set:我想知道是否用第二个替换第一个是安全/值得的。

最佳答案

在您的示例中,没有区别。但可能存在差异:

  • 选项的默认值为OFF
  • 您可以使用 CMakeDependentOption 使选项依赖于其他选项
  • set 接受 BOOL 以外的类型,尤其是 ;-lists .

此外,当您使用某个选项时,您是在向用户表明可以安全地设置该选项。从外部设置内部变量可能会巧妙地用无效值破坏脚本。

关于cmake - CMake 变量的 "option"和 "set CACHE BOOL"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36358217/

相关文章:

C++ 编译错误 : multiple definition of `main' but only 1 main function in project

c++ - 带有 cmake 的 CUDA。找不到配置文件

python - 如何在 Python 函数返回 boolean 值中使用 try-except?

c# - 如何序列化 Nullable<bool>?

PowerShell - 全局变量有什么用?

c++ - 尝试使用全局变量时使用 Xcode C++ 时出错

c++ - CMakeLists.txt文件中的config Eigen

cmake - 在模板文件中扩展变量、#cmakedefine 和生成器表达式

json - Scala:Option[Boolean] 有意义吗?

c++ - 全局变量影响单元测试结果的问题