Ant*_*nio 37 boolean global-variables cmake cmake-gui
以下两个之间有什么区别吗?
set(FOO true CACHE BOOL "description")
option(FOO "description" ON)
Run Code Online (Sandbox Code Playgroud)
背景:即使我已经使用CMake一段时间了,我option今天才注意到这个命令,因此我一直在使用set:我想知道用第二个替换第一个是否安全/值得.
usr*_*567 30
在您的示例中,没有区别.但可能存在差异:
Option默认值为OFF.CMakeDependentOptionSet接受除了以外的类型BOOL,尤其是: - 列表.此外,当您使用选项时,您向用户指示可以安全地设置它.从外部设置内部变量可能会使用无效值巧妙地破坏脚本.
偶然发现了这个问题,并以为我添加了更新。
正如解释这里的option,如果用相同名称的正常变量存在命令不会创建一个缓存变量。此行为是在 3.13 版中引入的(这是默认设置)。另一方面,将一个名为FOOwhen的 CACHE 变量设置FOO为普通变量,将产生两个 FOO 副本,一个普通变量和一个 CACHE 变量。
因此,在上游已经定义了同名变量时,是否使用option(FOO "" ON)或set(FOO ON CACHE BOOL "")也可能取决于您希望配置系统做什么。
注意:如果 FOO 已在 cache上游定义,则两者的行为方式仍然相同。区别仅在于上游是正常变量时。
| 归档时间: |
|
| 查看次数: |
12545 次 |
| 最近记录: |