Использование cmake для копирования файлов в несколько зависимых целевых двоичных папок - PullRequest
1 голос
/ 17 июня 2020

У меня есть система проектов (несколько пользователей) в cmake, которая использует ctest для запуска регрессионных тестов. В одной из библиотек в проекте есть файлы данных, которые требуются библиотеке, например плагины и файлы конфигурации. Затем у меня есть X других исполняемых целей (ctests), которые зависят от этой библиотеки. Я пытался настроить библиотеку CMakeLists.txt для копирования файлов в двоичный выходной каталог каждой цели, которая использует библиотеку. Я пробовал add_custom_command и file скопировать файлы. Я могу один раз скопировать файлы в любой каталог. Но все же библиотека решает, куда копировать файлы. Как я могу изменить это и определить общие c файлы "данных" как часть целевой библиотеки (или настраиваемой цели), чтобы эти файлы копировались вместе с самим двоичным файлом библиотеки в зависимые целевые двоичные каталоги?

lib / CMakeLists.txt

add_library(mylib ${mylib_sources})

file (COPY datafile DESTINATION $<TARGET_FILE_DIR,mylib>)

app2 / CMakeLists.txt

add_executable(app1 ${app1_sources})
target_link_libraries(app2 mylib)

add_test(NAME app1_test COMMAND app1)

app2 / CMakeLists.txt

add_executable(app2 ${app2_sources})
target_link_libraries(app2 mylib)

add_test(NAME app2_test COMMAND app2)

Теперь, когда я запустил ctest, он выполнит app1 и app2. Оба они статически связаны с библиотекой mylib. Но файл данных не копируется в двоичные каталоги app1 / app2. Я не хочу делать копию в каждом приложении X (может быть 100), и может быть несколько библиотек с файлами данных. Поэтому я хотел бы добавить файлы данных в библиотеку CMakeLists, которые будут скопированы во все двоичные каталоги, которые ее используют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...