cmake可以在编译命令中实现对代码中宏的控制。下面写一个简单的案例。
源文件main.cpp
#include <stdio.h>int main()
{
#ifdef HELLOprintf("this is hello\n");
#elseprintf("this is unknow\n");
#endif return 0;
}
CMakeLists.txt文件
cmake_minimum_required(VERSION 3.16)
project(demo)if(DEBUG)add_definitions(-DHELLO)
ENDIF()add_executable(demo main.cpp)
我们在cmake时通过设置DEBUG,就可以控制代码中HELLO宏的打开与关闭
1、不设置DEBUG参数进行编译
cmake ..
make
运行程序可以看到如下打印
root@ubuntu:/home/lng/cmakeTest/build# ./demo
this is unknow
root@ubuntu:/home/lng/cmakeTest/build#
2、设置DEBUG参数进行编译
cmake -D DEBUG=1 ..
make
运行程序可以看到如下打印
root@ubuntu:/home/lng/cmakeTest/build# ./demo
this is hello
root@ubuntu:/home/lng/cmakeTest/build#