Как я могу использовать qmake для рекурсивного копирования файлов

#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 .