#qmake
#qmake
Вопрос:
В моем дереве исходных текстов у меня есть куча ресурсов, я хочу скопировать их с помощью make install по определенному мной целевому пути. Поскольку в дереве ресурсов много-много подкаталогов, я хочу, чтобы qmake находил все файлы рекурсивно.
Я пытался:
resources.path = /target/path
resources.files = `find /path/to/resources`
INSTALLS = resources
и:
resources.path = /target/path
resources.files = /path/to/resources/*
resources.files = /path/to/resources/*/*
resources.files = /path/to/resources/*/*/*
resources.files = /path/to/resources/*/*/*/*
INSTALLS = resources
Оба не дают результата, на который я надеялся.
Ответ №1:
Я сделал это следующим образом:
res.path = $$OUT_PWD/targetfolder
res.files = sourcefolder
INSTALLS = res
это скопировало бы "wherever this qmake script is"/sourcefolder
в buildfolder/"same sub folder on build dir"/targetfolder
итак, у вас было бы targetfolder/sourcefolder/"all other subfolders and files..."
Пример:
#(My .pro file's dir) $$PWD = /mysources/
#(My Build dir) $$OUT_PWD = /project_build/
extras.path = $$OUT_PWD
extras.files = extras
src.path = $$OUT_PWD
src.files = src
INSTALLS = extras src
Скопировал бы /mysources/extras
в /project_build/extras
и /mysources/src
в /project_build/src
Ответ №2:
Похоже, что каталоги устанавливаются с помощью ‘cp -r -f’, так что это делает свое дело:
resources.path = /target/path
resources.files = /path/to/resources/dir1
resources.files = /path/to/resources/dir2
resources.files = /path/to/resources/dir3
resources.files = /path/to/resources/dirn # and so on...
resources.files = /path/to/resources/* # don't forget the files in the root
INSTALLS = resources
Комментарии:
1. Вы пробовали использовать функцию замены files() для перечисления файлов?
$$files(/path/to/resources/*, true)
возвращает все файлы рекурсивно в/path/to/resources
.