2013-11-28 114 views
0

我有一個大型的cmake項目,目前完全爲生產而構建;默認的gcc標誌選項類似於-fpic -s -O3在CMake項目中隨時更改編譯器標誌

什麼是用不同的gcc標誌重新編譯我的項目的一小部分最簡單的方法?

但是我知道如何完成這個的唯一方法是使用cmake重新生成我的makefile,構建子項目並再次重新生成makefile。

$ cmake ../ -DCMAKE_C_FLAGS="-fpic -g" 
$ make subproject 
$ cmake ../ -DCMAKE_C_FLAGS="-fpic -s -O3" 

我希望能夠留下的cmake出來,做這樣的事情:

$ make C_FLAGS="-fpic -g" subproject 
+1

爲什麼不簡單地使用2個構建目錄Release和Debug? – 2013-11-28 22:10:42

+0

我想沒有什麼反對的。這是否意味着我所要求的是不可能的? – ajwood

回答

0

您可以使用COMPILE_FLAGS target property在每個目標的基礎上設置編譯標誌。

請注意,這不能直接從命令行設置,所以你將不得不改變你的CMakeLists.txt。然而,您可以包含一個允許從命令行切換的option

add_library(subproject...) 

set_property(TARGET subproject PROPERTY COMPILE_FLAGS "-fpic") 
option(BUILD_SUBPROJECT_WITH_O3 Toggles optimizations for the subproject" OFF) 
if(BUILD_SUBPROJECT_WITH_O3) 
    set_property(TARGET subproject PROPERTY APPEND COMPILE_FLAGS "-s" "-O3") 
else() 
    set_property(TARGET subproject PROPERTY APPEND COMPILE_FLAGS "-g") 
endif() 
相關問題