CMake有CMAKE_BUILD_TYPE,它允許爲單個目標生成器定製。但是對於多個目標生成器來說,這是完全沒有價值的,因爲忽略CMAKE_BUILD_TYPE。一個人如何基於使用CMake的配置來控制動作?
(例如,考慮的緣故,我想有一個目標(如一個漫長的Doxygen的版本),我只是想建立在Visual Studio中的發電機和NMAKE發生器釋放模式。)
CMake有CMAKE_BUILD_TYPE,它允許爲單個目標生成器定製。但是對於多個目標生成器來說,這是完全沒有價值的,因爲忽略CMAKE_BUILD_TYPE。一個人如何基於使用CMake的配置來控制動作?
(例如,考慮的緣故,我想有一個目標(如一個漫長的Doxygen的版本),我只是想建立在Visual Studio中的發電機和NMAKE發生器釋放模式。)
AFAIK ,至少對於Visual Studio項目,CMake不會忽略多個目標生成器的CMAKE_BUILD_TYPE
。所以,如果你這樣做:
if(CMAKE_BUILD_TYPE STREQUAL "Release")
...
endif()
它只會在IDE中選擇「發佈」時纔有效。
我不認爲這會奏效。您的「if」語句在cmake配置時提前執行。 Visual Studio IDE中「Release」的OP選擇將在稍後的構建時進行。 –
這就是爲什麼我把「AFAIK」。 VS生成器應該將從if()生成的代碼放入.vsproj的Release部分。但我不確定。 – arrowd
我可以確認這實際上被忽略了。 (具體來說,CMAKE_BUILD_TYPE是爲Visual Studio構建時的空字符串) –
這就是爲什麼我總是爲我的doxygen世代做一個單獨的cmake目標,它不是「ALL」cmake目標的一部分;然後在發佈時手動建立doxygen目標。你的問題很好。 –