cmake编译选项
1 需求
现在已经有⼀个cmake⼯程,我想要添加-O0 -g,⽣成gdb的调试信息和不进⾏代码优化。
也就是说,我该怎样修改CFLAGS和CPPFLAGS?
2 在project后⾯添加
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g")
关于CMAKE_C_FLAGS
它将这⾥设置的-O0 -g追加到CFLAGS前⾯。这样不能解决问题,因为默认原来会有-O3,会覆盖前⾯刚刚加的-O0。这个不分debug和release。
3 CFLAGS有多个相同的编译选项,哪个⽣效呢?
⽐如-O0 -O3同时存在。
后⾯的会覆盖前⾯的。
gcc -O0 -O3 test.c -o test,则执⾏O3优化
gcc -O3 -O0 test.c -o test,不执⾏优化
为什么现在都用cmake4 最好的解决办法
如果是编译release版本的话,
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make
如果是编译debug版本的话,
mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
这⾥CMAKE_C_FLAGS_DEBUG默认只是有⼀个“-g”,所以,可以在此基础上添加优化选项
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0")
set(CMAKE_C_FLAGS_Release "${CMAKE_C_FLAGS_Release} -O3")

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。