Скопируйте необходимые библиотеки с помощью CMake / MSBuild - PullRequest
0 голосов
/ 27 марта 2019

Проблема

Я использую 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 вболее элегантный способ, так что этот крайний случай решён.

...