我将Visual Studio 12(2013)与MSBuild 12.0.40629.0结合使用。
我有两个项目,A
和B
。 A
取决于项目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,因此解决了这种极端情况。