CMakeLists 实现动态宏开关

2,474 阅读1分钟

最近在工作中需要通过一份C代码控制逻辑走向,网上找了一下资料,发现可以通过在CMakeLists文件中动态定义宏开关,从而能够达到编译出不同逻辑流的代码。

具体步骤:

首先,我在src代码里编写了若干debug的输出:

#IFDEF DEBUG

    some print command;

#ENDIF

然后,在CMakeLists文件中添加DEBUG的定义:

IF (CMAKE_BUILD_TYPE STREQUAL DEBUG)
    ADD_DEFINITIONS(-DDEBUG)
ENDIF()

最后,在cmake的时候设置参数 -DCMAKE_BUILD_TYPE 为 DEBUG:

$ cmake .. -DCMAKE_BUILD_TYPE=DEBUG
$ make -j4

这样再运行可执行文件时就会打印出some print command的debug信息了。如果不想看到debug信息,只需在参数中不设置DEBUG参数,或者将DEBUG参数设置为其它值即可(以下两种方式二者选其一):

$ cmake ..
$ cmake .. -DCMAKE_BUILD_TYPE=RELEASE

到此 CMakeLists 实现动态宏开关介绍完成。