2012-01-23 11 views
2

CMake有CMAKE_BUILD_TYPE,它允許爲單個目標生成器定製。但是對於多個目標生成器來說,這是完全沒有價值的,因爲忽略CMAKE_BUILD_TYPE。一個人如何基於使用CMake的配置來控制動作?

(例如,考慮的緣故,我想有一個目標(如一個漫長的Doxygen的版本),我只是想建立在Visual Studio中的發電機和NMAKE發生器釋放模式。)

+1

這就是爲什麼我總是爲我的doxygen世代做一個單獨的cmake目標,它不是「ALL」cmake目標的一部分;然後在發佈時手動建立doxygen目標。你的問題很好。 –

回答

-1

AFAIK ,至少對於Visual Studio項目,CMake不會忽略多個目標生成器的CMAKE_BUILD_TYPE。所以,如果你這樣做:

if(CMAKE_BUILD_TYPE STREQUAL "Release") 
... 
endif() 

它只會在IDE中選擇「發佈」時纔有效。

+2

我不認爲這會奏效。您的「if」語句在cmake配置時提前執行。 Visual Studio IDE中「Release」的OP選擇將在稍後的構建時進行。 –

+0

這就是爲什麼我把「AFAIK」。 VS生成器應該將從if()生成的代碼放入.vsproj的Release部分。但我不確定。 – arrowd

+1

我可以確認這實際上被忽略了。 (具體來說,CMAKE_BUILD_TYPE是爲Visual Studio構建時的空字符串) –

相關問題