CMake 设置开关选项

有时候为了方便调试,方便条件式的构建工程项目,则可在 CMakeLists.txt 文件中添加开开关选项,并将一系列如自定义的宏定义,和构建或者不构建的工程写入其中,这样仅通过修改 CMakeLists.txt 文件中的指定开关选项,则可 cmake 构建 便捷开关管理一些列的自定义选项。

常使用 option 命令,它的语法如下:

option(<variable> "<help_text>" [value])

option 中的三个参数,

  • <variable> 表示变量名
  • "<help_text>" 表示帮助信息,如解释这个自定义的变量的用途
  • [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 选项的 ONOFF 来控制 C++ 的条件编译。

06-12 06:21