2016-08-25 94 views
-2

我不知道如何使用Cmake在Visual Studio中配置多個構建類型。 例如,當調試在Visual Studio中選擇,我需要*d.dll複製到${CMAKE_BINARY_DIR}/rundir/debug/bin當在Visual Studio中選擇發佈,我需要*.dll複製到${CMAKE_BINARY_DIR}/rundir/release/bin如何使用cmake確定當前構建類型的visual studio

有人可以告訴我該怎麼做嗎?

+0

你的意思_copy_在彥博成功 - build_感或作爲實際_install_一步?你知道,你可以使用生成器表達式來指定一個依賴於構建類型的位置嗎? –

+0

DLL是另一個目標的產物嗎? –

+0

。我找到了解決辦法。我用視覺工作室的$(配置)在可變的cmake這樣的:add_custom_command(TARGET OBS POST_BUILD \t \t COMMAND如果$(ConfigurationName)==調試( \t \t XCOPY/Y/d「$(QTDIR)\\ BIN \ \ Qt5WebKitWidgetsd.dll」 「$(SolutionDir)rundir \\ $(配置)\\ \\斌64位」 \ n其他)(//做某事) – Cosi10a1

回答

1

正如你想要一個後構建行動,有一個CMake命令和適當的變量可用。

的平臺獨立的命令以通過CMake文件複製周圍使用CMake itself on the command line

${CMAKE_COMMAND} -E copy_if_different "${src}" "${dest}" 

「當前」的配置可以與generator expressions提取:

$<CONFIG> 

甚至直接測試真實性

$<CONFIG:Debug> 

的OU輸出目錄的目標二進制文件(即可執行文件和共享庫/ DLL)的與所述目標性能RUNTIME_OUTPUT_DIRECTORY(和RUNTIME_OUTPUT_DIRECTORY_<CONFIG>),它們是預先填充了全局變量CMAKE_RUNTIME_OUTPUT_DIRECTORY(和CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>)給出。

最後,我們可以撰寫生成後命令

add_custom_command(TARGET myTarget POST_BUILD 
        COMMAND if $<CONFIG:Debug> ("${CMAKE_COMMAND}" -E copy_if_different "${path_to_dependent_dll}/dependent.dll" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}") 
        COMMAND if $<CONFIG:Release> ("${CMAKE_COMMAND}" -E copy_if_different "${path_to_dependent_dll}/dependent.dll" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}") 
        COMMENT "Copying dependent DLL" 
) 
相關問題