Как в cmake правильно копировать библиотеки при установке?

Рейтинг: 0Ответов: 0Опубликовано: 08.02.2023

Что я делаю

Пусть у меня есть вот такая структура проекта

SuperProject/
  _build/
      my_lib1.dll
      my_lib2.dll
      Qt6Core.dll
      Qt6Guid.dll
      Coin4.dll
      AnyLib.dll
      main.exe
  _install/
      bin/
          main.exe
      lib/
          my_lib1.dll
          my_lib2.dll
      include/
          ...   
  src/
      ...

1 Библиотеки my_lib1 и my_lib2 это мои библиотеки, я их собираю из исходников.

2 Библиотеки Qt6Core.dll и Qt6Guid.dll копируются в папку _build с помощью windeployqt.

add_custom_command(TARGET ${target} POST_BUILD
        COMMAND "${_qt_bin_dir}/windeployqt.exe"
                \"$<TARGET_FILE:${target}>\"
)

3 Библиотеки Coin4.dll и AnyLib.dll копируются с помощью такой команды.

add_custom_command(TARGET main POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    $<$<CONFIG:Debug>:C:/Coin3D/bin/Coin4d.dll>
    $<$<NOT:$<CONFIG:Debug>>:C:/Coin3D/bin/Coin4.dll>
    $<TARGET_FILE_DIR:main>
)

Проблема

С пунктом 1 проблем никаких нет.

С пунктами 2 и 3 проблема заключается в том, что я не знаю, как копировать файлы в папку _install. Т.е. в папку _build они копируются с помощью POST_BUILD после сборки, а как тогда копировать библиотеку при инсталляции?

Мои соображения

Мне кажется, что это нужно сделать с помощью команды install(), но как? Всю директорию копировать?

Ответы

Ответов пока нет.