option
是 CMake 中用于定义选项的命令。选项可以用来控制代码的编译行为,允许用户在构建过程中进行配置选择。
option
命令的语法如下:
option(<option_variable> "<option_description>" [initial_value])
<option_variable>
是选项的变量名<option_description>
是选项的描述文本initial_value
是选项的初始值(可选,默认为 OFF
)。使用
option
命令后,CMake 会创建一个名为<option_variable>
的变量,并将其默认值设置为initial_value
。在生成的构建系统中,用户可以通过命令行、CMake GUI 或其他方式来更改这个选项的值。
可以使用
option
命令定义一个简单的选项。
option(ENABLE_FEATURE_X "Enable feature X" OFF)
这将定义一个名为 ENABLE_FEATURE_X
的选项,其描述为 “Enable feature X”,默认值为 OFF
。
您可以在 CMakeLists.txt 文件中使用选项来控制宏的定义。
option(ENABLE_FEATURE_X "Enable feature X" OFF)
if(ENABLE_FEATURE_X)
add_compile_definitions(ENABLE_FEATURE_X)
endif()
如果选项 ENABLE_FEATURE_X
被设置为 ON
,将定义宏 ENABLE_FEATURE_X
。
通过将选项的值设置为缓存变量,可以在构建过程中保留用户对选项的更改。
option(ENABLE_FEATURE_X "Enable feature X" OFF)
set(ENABLE_FEATURE_X ${ENABLE_FEATURE_X} CACHE BOOL "Enable feature X" FORCE)
在上述示例中,CACHE BOOL
指定了选项的类型为布尔型,FORCE
强制将选项的值设置为缓存变量的值。
可以使用
ADVANCED
参数将选项标记为高级选项,这样在 CMake GUI 或其他界面中默认情况下不会显示该选项。
option(ENABLE_FEATURE_X "Enable feature X" OFF)
mark_as_advanced(ENABLE_FEATURE_X)
mark_as_advanced
命令将选项 ENABLE_FEATURE_X
标记为高级选项。
可以使用选项的值来设置其他变量。例如,可以根据选项的值设置不同的编译器标志或路径。
option(USE_CUSTOM_COMPILER "Use custom compiler" OFF)
if(USE_CUSTOM_COMPILER)
set(CUSTOM_COMPILER_PATH "/path/to/custom/compiler" CACHE PATH "Custom compiler path")
set(CMAKE_CXX_COMPILER ${CUSTOM_COMPILER_PATH})
endif()
如果选项 USE_CUSTOM_COMPILER
被设置为 ON
,将使用自定义编译器路径来设置 CMAKE_CXX_COMPILER
变量。