option
的默认值为OFF
。CMakeDependentOption
可以使一个选项依赖于其他选项。set
接受除 BOOL
以外的其他类型,特别是列表。偶然发现了这个问题,并且想要添加一些更新。
如此处所解释的,如果存在与option
命令同名的普通变量,则该命令不会创建一个缓存变量。这种行为在3.13版本中引入(默认情况下)。另一方面,当FOO
作为普通变量存在时,设置一个名为FOO
的缓存变量将产生两个FOO副本,一个普通变量和一个缓存变量。
因此,是否使用option(FOO "" ON)
还是set(FOO ON CACHE BOOL "")
也取决于您希望配置系统在已经定义了同名变量时做什么。
注意:如果FOO已经在上游缓存中定义,则这两者仍然具有相同的行为方式。区别只在于上游是一个普通变量。
set
时,通过将变量设置为布尔值,我不是防止用户在命令行中给它赋予其他类型的值吗?无论如何,我认为您的第二个观点非常相关。 - Antoniooption
还是set(...CACHE BOOL)
。因此,这种“类型安全性”似乎只适用于ccmake/cmake-gui。 - kdopenoption
接受一个可选的初始值。如果没有提供初始值,则使用OFF
。 - Cnly