使用CMake / MSBuild复制所需的dll

时间:2019-03-27 13:10:49

标签: c++ visual-studio-2013 cmake msbuild shared-libraries

问题

我将Visual Studio 12(2013)与MSBuild 12.0.40629.0结合使用。 我有两个项目,ABA取决于项目B构建的共享库。 目前,我使用类似以下cmake的代码来复制所需的共享库(dll):

project(A)

add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    ${CMAKE_BINARY_DIR}/bin/B.dll
    ${CMAKE_CURRENT_BINARY_DIR}/bin)

这通常可行,但是如果我修改项目B的代码而不修改项目A,则不会调用项目A的post build命令(我没有修改项目),而我却陷入了旧共享库的困境。此刻,我添加了一个空格字符并将其删除,以强制构建项目A /运行后期构建。

愚蠢的解决方案

我可以使用项目B中的后构建命令将共享库复制到项目A中,但这意味着我有两个位置,用于复制dll。

更优雅的解决方案

在撰写本文时,我想到了另一个更好的解决方案。将B后构建中的共享库复制到项目A中就足够了,但是会使项目结构更加交织。

问题

我如何使CMake或MSBuild以更优雅的方式复制dll,因此解决了这种极端情况。

0 个答案:

没有答案