2016-08-25 93 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" 
) 
相关问题