我不知道如何使用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