Проблема
Я использую 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
, команда post build проекта A
не вызывается (я не изменял проект), и я застрял в старой общей библиотеке.В данный момент я добавляю пробел и удаляю его для принудительного создания проекта A
/ запуска пост-сборки.
Глупое решение
Я мог бы скопировать общую библиотеку с помощью команды пост-сборки в проектеB
для проецирования A
, но это означает, что у меня есть два места, куда копируются dll.
Более элегантное решение
При написании этого я нашел другое лучшее решение.Копирование общей библиотеки в пост-сборке B
в проект A
является достаточным, но делает структуру проекта более взаимосвязанной.
Вопрос
Как создать копии CMake или MSBuild вболее элегантный способ, так что этот крайний случай решён.