如何在 CMake 构建中添加自定义标志

How to add custom flag in CMake building

我的主要目标是在命令行中构建项目时使用标志。所以我可以添加自己的标志,如 DEBUG 或 MY_FLAG.

#ifdef DEBUG
#define debug_print(format, ...) printf(format, __VA_ARGS__)
#else
#define debug_print(...)
#endif

int main() {
    debug_print("%s\n", "Debugging mode");

    return 0;
}

我用以下方法构建程序:

cmake -H. -Bbuild
make -C build -j

然后 运行 和

./build/main

我将 add_definitions(-DDEBUG) 添加到 CMakeList 文件中,效果很好。 但是我想在 cmake -H. -Build 进程中添加标志。
我试过 cmake -H. -Build -DCMAKE_BUILD_TYPE=DEBUG 但它不起作用。

我遇到了类似的问题。我解决它的方法是将这一行添加到 CMakeLists.txt:

add_compile_options("$<$<NOT:$<CONFIG:RELEASE,MINSIZEREL,RELWITHDEBINFO>>:-DDEBUG>")

这样,每当 -DMAKE_BUILD_TYPE 设置为 RELEASEMINSIZERERELWITHDEBINFO 时,我的自定义标志 DEBUG 将不会被定义。