2013-07-18 101 views
1

美好的一天,我的問題關於Cmake。是否有可能創建具有不同構建類型的MSVC項目的依賴項。現在我有cmake的文件下面的代碼:ADD_DEPENDENCIES以不同的構建類型

SET(LIBRARIES optimized lib_release debug lib_debug) 
ADD_CUSTOM_TARGET(lib_release 
COMMAND ${CMAKE_COMMAND} -E copy_if_different "bla bla bla" 
COMMENT "Build dep release library") 
ADD_CUSTOM_TARGET(lib_debug 
COMMAND ${CMAKE_COMMAND} -E copy_if_different "bla bla bla" 
COMMENT "Build debug library") 
ADD_DEPENDENCIES(${PROJECT_NAME} lib_release) 
ADD_DEPENDENCIES(${PROJECT_NAME} lib_debug) 

這完美地工作,但如果我只希望創建發佈版本,我會得到調試版本庫,不需要釋放多餘步的構建,該庫不掛我的目標(發佈),但時間來構建它,我花了很多。我的問題是下一個:是否有可能指定哪些依賴我使用的版本和調試是這樣的:

ADD_DEPENDENCIES(${PROJECT_NAME} lib_release optimize) 
ADD_DEPENDENCIES(${PROJECT_NAME} lib_debug debug). 

回答

0

cmake的將認出你的-DCMAKE_BUILD_TYPE=Debug|Release etc命令設置生成類型。然後你可以使用set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} ")的編譯時間標誌等等,像這樣:

set(CMAKE_CXX_FLAGS_DEBUG "/Zi /Od /D \"_DEBUG\" /D \"DEBUG\" /RTC1 /MDd") 
    set(CMAKE_CXX_FLAGS_MINSIZEREL "/MD") 
    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} /Zi") 

您還可以設置連接標誌與set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} <flags>)

個人目標可以以類似的方式,以及解決

set_target_properties(yourexe PROPERTIES 
         LINK_FLAGS_RELEASE "<FLAGS>" 
         LINK_FLAGS_DEBUG "/DEBUG" 
         LINK_FLAGS_RELWITHDEBINFO "<FLAGS>" 
         LINK_FLAGS_MINSIZEREL "<FLAGS>") 

這個file將幫助你看到不同操作系統的一些選項。

相關問題