Qt qmake не следует структуре исходной папки при использовании CONFIG + = object_parallel_to_source - PullRequest
0 голосов
/ 08 ноября 2019

При сборке проекта в Qt Creator я хочу, чтобы (затененный) каталог сборки имел ту же структуру папок, что и моя исходная папка. Это можно сделать с помощью (недокументированного) оператора в файле .pro:

CONFIG += object_parallel_to_source

«Стандартные» файлы * .cpp компилируются, а соответствующие файлы * .o помещаются в правильную папку сборки. Но ... moc и rcc помещают все файлы moc _ *. Cpp и qrc _ *. Cpp на верхний уровень каталога сборки, а не в соответствующий каталог. Что еще хуже: qmake снова создает полный путь к каталогу в указанном каталоге сборки !!

Пример прояснит это: скажем, ваш источник (суммированный) организован так:

/usr/share/myapps/project
  |_ project.pro     <= contains  'CONFIG += object_parallel_to_source'
  |_ mainfolder
  |    |_ main.cpp
  |_ subfolder1
  |    |_ class1_no_QOBJECT.cpp   
  |    |_ class2_with_QOBJECT.cpp
  |_ subfolder2
       |_ class3_no_QOBJECT.cpp
       |_ resources.qrc

и каталог сборки указан в Qt Creator

/usr/share/myapps/build

Запуск qmake и получение результатов в следующей структуре папок сборки

 /usr/share/myapps/build
      |_ mainfolder
      |    |_ main.o
      |_ subfolder1
      |    |_ class1_no_QOBJECT.o
      |_ subfolder2
      |    |_ class3_no_QOBJECT.o
      |_ moc_class2_with_QOBJECT.cpp    <- should be in subfolder1
      |_ qrc_resources.cpp              <- should be in subfolder2
      |_ usr
           |_ share
               |_ myapps
                    |_build
                       |_ moc_class2_with_QOBJECT.o       <- should be in subfolder1
                       |_ qrc_resources.o                 <- should be in subfolder2

Есть ли способ предотвратить это удвоение структуры папок?

Я использую Qt 5.9.1 (потому что он установлен поставщиком оборудования - встроенный Linux) в Ubuntu 18.04

РЕДАКТИРОВАТЬ: я проверил Makefile, который создается qmake. Строка, указывающая, куда помещать Объекты, должна быть

OBJECTS = /path/to/objects/<filename>.o

, но на самом деле отсутствует обратная косая черта

OBJECTS = path/to/objects/<filename>.o

Это является основной причиной удвоения структуры папок.

Ошибка в qmake?

...