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,不執行優化
4 最好的解決辦法
如果是編譯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")
