Можно ли изменить переменную QT qmake в родительском проекте subdirs?

У меня есть проект общей библиотеки со структурой, подобной этой:

library.pro:

TEMPLATE = subdirs
CONFIG  += ordered
SUBDIRS += libs plugins test_programs
...
QT += concurrent
...
# Those files contains pure interfaces (C++ abstract classes)
# with no implementation, and some helper classes with inline implementation.
# So there is no reason to create yet another subproject for them
HEADERS += iface/IInterface1.h \
iface/IInterface2.h \ # IInterface2 needs QtConcurrent
...

IInterface2.h:

...
#include <QtConcurrent> // ERROR HERE: file not found, i.e. qmake ignores
// "QT += concurrent" statement in library.pro

class MyHelperExc : public QtConcurrent::Exception
{ ... }

class IInterface2: public virtual IBaseInterface
{ ... }

Итак, моя проблема: qmake просто игнорирует переменные операции в SUBDIRS родительский проект.
Но это нормально работает в подпроектах.
Что я делаю неправильно?

2

Решение

TEMPLATE = subdirs

В этой строке говорится, что library.pro — это просто контейнер для других проектов, содержащийся в подкаталогах, перечисленных в SUBDIRS переменная. Большинство других переменных в library.pro игнорируются, кроме CONFIG += ordered, который указывает, что подкаталоги должны обрабатываться в том порядке, в котором они указаны.

Все подпроекты, включающие IInterface2.h, должны иметь QT += concurrent в своих .pro файлах.

1

Другие решения

Что я делаю неправильно?

Тот факт, что вы думаете, что qmake будет анализировать, однако это не то, как работает qmake в настоящее время. SUBDIRS будет означать, что он будет выглядеть только в подпапках.

0

По вопросам рекламы [email protected]