Ответ 1
Ok. Я нашел решение. Просто добавьте упорядоченное в CONFIG и произносите поддиры в правильном порядке.
CONFIG += ordered
SUBDIRS += Utility GraphicModule PackingLib Core GameProto
Для меня эта работа отлично
У меня есть проект с 5-6 библиотеками и один исполняемый файл. Исполняемый файл зависит от библиотек, а некоторые библиотеки зависят от других библиотек. Как я могу указать порядок сборки, чтобы зависимости создавались до их необходимости?
Ok. Я нашел решение. Просто добавьте упорядоченное в CONFIG и произносите поддиры в правильном порядке.
CONFIG += ordered
SUBDIRS += Utility GraphicModule PackingLib Core GameProto
Для меня эта работа отлично
Хотя на этот вопрос был дан ответ и принят давно, я чувствую необходимость добавить еще один ответ; Я честно считаю, что есть лучший ответ.
Я считаю CONFIG += ordered
вредной и плохой привычкой. Вероятно, это было кое-что, что было преждевременно введено разработчиками qmake. И есть сильные противники для его использования. Недостатки следующие:
- он предотвращает разработку Qt-разработчиков реалистичные функции
Поэтому я предлагаю изменить файл проекта следующим образом:
TEMPLATE = subdirs
SUBDIRS += Utility GraphicModule PackingLib Core GameProto
GameProto.depends = Core
Core.depends = PackingLib
PackingLib.depends = GraphicModule
GraphicModule.depends = Utility
Таким образом, зависимости четко определены. Вы можете также думать о других, более сложных иерархиях зависимостей, которые возможны таким образом и абсолютно невозможны с порядком сборки.
Обновление: (21 июня 2017 года)
К сожалению, qmake
не лучший инструмент, когда речь идет о крупных проектах с глубокими иерархиями подпроектов. Проблемы, связанные с более крупными проектами, следующие:
Run qmake
занимает очень много времени, чтобы выполнитьqmake
не может правильно рассчитать зависимости между проектами, что делает необходимым компилировать подпроекты отдельноВ основном существуют два способа решения этих проблем:
qmake
и сокращению времени компиляции. Однако даже этот подход может иногда не срабатывать.cmake
. Шутки в сторону. cmake
- зрелый продукт, а поддержка из Qt Creator сравнима с qmake
.Комментарий:
Из-за известных проблем с qmake
компания Qt уже решила внедрить новый инструмент QBS
. Однако использование этого инструмента не так просто, как может показаться при первом впечатлении. Нет простого перехода от qmake
до QBS
, особенно для более сложных проектов. Подобный Javascript синтаксис языка QBS
нелегко понять, а документации недостаточно.
Есть IMHO только два других доступных инструмента, которые могут заменить калибр qmake
: