我不知道如何使用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
有人可以告訴我該怎麼做嗎?
我不知道如何使用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
有人可以告訴我該怎麼做嗎?
正如你想要一個後構建行動,有一個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"
)
你的意思_copy_在彥博成功 - build_感或作爲實際_install_一步?你知道,你可以使用生成器表達式來指定一個依賴於構建類型的位置嗎? –
DLL是另一個目標的產物嗎? –
。我找到了解決辦法。我用視覺工作室的$(配置)在可變的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