如何通过CMake命令行定义无值的DEBUG宏?
仅定义DEBUG宏(不赋值)的CMake命令行实现方法
方法1:修改CMakeLists.txt配合命令行参数
先把你当前的add_compile_definitions(DEBUG=$(DEBUG))替换为CMake原生的条件判断逻辑:
if(DEBUG) add_compile_definitions(DEBUG) endif()
执行CMake配置时,只需在命令行声明DEBUG变量即可(无需赋值,或赋值任意值都能触发):
# 两种写法均有效 cmake -DDEBUG .. cmake -DDEBUG=ON ..
生成的构建系统会自动为编译器添加-DDEBUG参数,仅定义宏而不设置值。
方法2:直接通过命令行传递编译定义
如果不想修改现有CMakeLists.txt,可以直接在CMake命令行指定全局编译标志:
# 针对C++项目 cmake -DCMAKE_CXX_FLAGS="-DDEBUG" .. # 针对C项目 cmake -DCMAKE_C_FLAGS="-DDEBUG" ..
这种方式会直接把-DDEBUG注入到编译器参数中,同样实现仅定义宏的需求。
内容的提问来源于stack exchange,提问作者MoneyBall
相关产品推荐
相关产品推荐

