天天看點

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 ..

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

繼續閱讀