如何在 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
设置为 RELEASE
、MINSIZERE
或 RELWITHDEBINFO
时,我的自定义标志 DEBUG
将不会被定义。
我的主要目标是在命令行中构建项目时使用标志。所以我可以添加自己的标志,如 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
设置为 RELEASE
、MINSIZERE
或 RELWITHDEBINFO
时,我的自定义标志 DEBUG
将不会被定义。