Как скопировать содержимое каталога в каталог сборки после make с CMake?



У меня есть некоторые конфигурационные файлы (xml, ini, ...) в рядом с исходными файлами. Как я могу скопировать все файлы в каталог config в каталог сборки (рядом с исполняемым файлом) каждый раз, когда я делаю проект?

693   3  

3 ответов:

можно использовать add_custom_command.

скажем, ваша цель называется MyTarget, то вы можете сделать это:

add_custom_command(TARGET MyTarget PRE_BUILD
                   COMMAND ${CMAKE_COMMAND} -E copy_directory
                       ${CMAKE_SOURCE_DIR}/config $<TARGET_FILE_DIR:MyTarget>)

это происходит каждый раз, когда вы строите MyTarget и копирует содержимое "/ config " в каталог, где будет находиться целевой exe/lib.

как Марк Lakata указывает в комментарии ниже, заменяя PRE_BUILD С POST_BUILD на add_custom_command гарантирует, что копирование произойдет только в том случае, если сборка преуспевает.

объяснение

  • ${CMAKE_COMMAND} - это путь к CMake
  • -E делает команды запуска CMake вместо построения
  • copy_directory это
  • $<TARGET_FILE_DIR:MyTarget> это выражение генератор, описано в add_custom_command документация.

CMake поддерживает копию файла типа оболочки. Эта ссылка должна быть полезна для вас - Как скопировать каталог из исходного дерева в бинарное дерево?

в моем проекте я использую INSTALL, чтобы указать в CMake, что и куда я перемещаю свой двоичный файл с файлом conf. После выполнения cmake, используйте "make install".

Comments

    Ничего не найдено.