При сборке проекта в 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?