Как в cmake правильно копировать библиотеки при установке?
Что я делаю
Пусть у меня есть вот такая структура проекта
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()
, но как? Всю директорию копировать?
Источник: Stack Overflow на русском