MyTetra Share
Делитесь знаниями!
Как в файле Qt-проекта прописать копирование заданных файлов при инсталляции
Время создания: 16.11.2023 10:15
Текстовые метки: c++, Qt, Qt4, Qt5, проект, *.pro, копирование, файл, команда, директива, инсталляция, qmake, make, install, синтаксис
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Инсталляция Qt и сборка проектов
Запись: xintrea/mytetra_syncro/master/base/1700118919pwb7u9lal0/text.html на raw.github.com

Бывает так, что при выполнении команды 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), будет происходит копирование заданных файлов.


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования