根据cmake 文档:
提供一个选项供用户选择“开”或“关”
但是,我注意到该命令适用于任何其他值。
我的测试脚本:
cmake_minimum_required (VERSION 2.6)
option(MY_VAR "var description" OFF)
message("MY_VAR=${MY_VAR}")
if(MY_VAR)
message("MY_VAR is not OFF/FALSE/0")
endif()
Run Code Online (Sandbox Code Playgroud)
结果:
>cmake ..
or
>cmake -DMY_VAR=OFF ..
output:
MY_VAR=OFF
Run Code Online (Sandbox Code Playgroud)
>cmake -DMY_VAR=ON ..
output:
MY_VAR=ON
MY_VAR is not OFF/FALSE/0
Run Code Online (Sandbox Code Playgroud)
>cmake -DMY_VAR=FALSE ..
output:
MY_VAR=FALSE
Run Code Online (Sandbox Code Playgroud)
>cmake -DMY_VAR=TRUE ..
output:
MY_VAR=TRUE
MY_VAR is not OFF/FALSE/0
Run Code Online (Sandbox Code Playgroud)
>cmake -DMY_VAR=0 ..
output:
MY_VAR=0
Run Code Online (Sandbox Code Playgroud)
>cmake -DMY_VAR=1 ..
output:
MY_VAR=1
MY_VAR is not OFF/FALSE/0
Run Code Online (Sandbox Code Playgroud)
cmake -DMY_VAR=3 ..
output:
MY_VAR=3
MY_VAR is not OFF/FALSE/0
Run Code Online (Sandbox Code Playgroud)
命令的文档option仅描述了有关可能值的约定。本身option并不检查变量的值,因此变量可以包含任何字符串。
变量的实际解释取决于CMakeLists.txt脚本。
通常,选项是用if(VAR)语法检查的,因此它们根据if command的文档进行解释:
如果常量为
1、ON、YES、TRUE、Y或非零数,则为 True。如果常量为0、OFF、NO、FALSE、N、IGNORE、NOTFOUND、空字符串或以后缀 结尾,则为 False-NOTFOUND。
正如您所看到的,该if命令允许对选项的多个值进行 True 解释,并允许对多个值进行 False 解释。(没有理由使用带-NOTFOUND后缀的值:它们只能由类似 的命令生成find_library。)
| 归档时间: |
|
| 查看次数: |
5057 次 |
| 最近记录: |