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 ..
這裡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")