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,不執行優化

 

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")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM