CMake 设置开关选项
有时候为了方便调试,方便条件式的构建工程项目,则可在 CMakeLists.txt
文件中添加开开关选项,并将一系列如自定义的宏定义,和构建或者不构建的工程写入其中,这样仅通过修改 CMakeLists.txt 文件中的指定开关选项,则可 cmake 构建 便捷开关管理一些列的自定义选项。
常使用 option
命令,它的语法如下:
option(<variable> "<help_text>" [value])
option 中的三个参数,
<variable>
表示变量名"<help_text>"
表示帮助信息,如解释这个自定义的变量的用途[value]
则表示此变量的值,如设置为ON
或者OFF
。
注:对于为 [value] 设置的所有非 ON 的值均被视作 OFF 来处理。
示例:
如创建选项 PRINT_INFO,在选项启用时用输出消息并添加预处理宏定义 PRINT_INFO ,这样在代码中我们就可以通过判断宏定义来开关我们的调试打印。
CMakeLists.txt 中
option(PRINT_INFO "print debug info" ON)
if (PRINT_INFO)
message("option PRINT_INFO is on")
add_definitions(-DPRINT_INFO)
endif()
代码中
#ifdef PRINT_INFO
#define LOG(info) std::cout << "[" << __func__ << "]:" << __LINE__ << info << std::endl
#else
#define LOG(info)
#endif
void MyFunction(MyStruct* stru)
{
if (!stru)
{
LOG("stru is nullptr.");
return;
}
// ...
}
这样就可以通过 CMakeLists.txt 文件中 PRINT_INFO 选项的 ON 或 OFF 来控制 C++ 的条件编译。
参考链接: