CMake变量的“option”和“set CACHE BOOL”有什么区别?

问题描述 投票:35回答:1

以下两个之间有什么区别吗?

set(FOO true CACHE BOOL "description")

option(FOO "description" ON)

文档:set - option

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

cmake boolean global-variables cmake-gui
1个回答
26
投票

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

  • Option的默认值为OFF
  • 您可以使用CMakeDependentOption创建一个取决于其他选项的选项
  • Set接受BOOL以外的类型,尤其是;-lists

此外,当您使用选项时,您向用户指示可以安全地设置它。从外部设置内部变量可能会使用无效值巧妙地破坏脚本。

© www.soinside.com 2019 - 2024. All rights reserved.