Бывает так, что при выполнении команды make install необходимо сделать копирование некоторых файлов проекта в какие-либо директории. Сам Makefile, естественно, генерируется через qmake (утилита cmake здесь не рассматривается). Вопрос в том, как в синтаксисе *.pro-файла написать директивы копирования заданных файлов.
Объяснение будет делаться на примере проекта, имеющего следующую структуру директорий:
cross_package [DIR]
features [DIR]
scripts [DIR]
src [DIR]
ourProject.pro
Итак, как сделать копирование при выполнении make install? Вначале задается именованный список файлов, которые подлежат копированию. Выполняется это через директиву *.files, где вместо звездочки можно писать любое имя, которое прийдет в голову:
Вот как выглядит именованный список с именем features, состоящий из одного файла:
features.files = $${PWD}/features/loginWindow.prf
Вот как выглядит именованный список с именем installators, состоящий из нескольких файлов:
installators.files = \
scripts/install_win.bat \
scripts/install_linux.sh \
scripts/install_macos.sh
Переменная $${PWD} обозначает место, где находится *.pro-файл, и в общем случае его можно даже не указывать.
Директория назначения, куда будут скопированны файлы, задается через директиву *.path, где вместо звездочки пишется имя именованного списка файлов, показанного выше:
features.path = $${PWD}/cross_package/features
installators.path = $${PWD}/cross_package
Для того, чтобы копирование, наконец, было прописано в Makefile в раздел, ответственный за команду make install, необходимо воспользоваться директивой INSTALLS += ... . В данную переменную добавляются имена именованных списков файлов, подлежащих копированию:
INSTALLS += features installators
Таким образом, полный код будет выглядеть так:
features.files = $${PWD}/features/loginWindow.prf
features.path = $${PWD}/cross_package/features
installators.files = \
scripts/install_win.bat \
scripts/install_linux.sh \
scripts/install_macos.sh
installators.path = $${PWD}/cross_package
INSTALLS += features installators
Теперь, при запуске команды make install (по сути, это пункт меню "Развертывание" или "Развернуть ..." в Qt Creator), будет происходит копирование заданных файлов.