Is it possible to modify QT qmake variable in the

2019-07-11 21:12发布

I have the shared library project with structure like this:

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
{ ... }

So, my problem is: qmake just ignores variable operations in SUBDIRS parent project. But it works ok in subprojects. What am i doing wrong?

2条回答
Deceive 欺骗
2楼-- · 2019-07-11 21:46

What am i doing wrong?

The fact that you think qmake would parse, however that is not how qmake is currently working. SUBDIRS will mean that it will only look in subfolders.

查看更多
够拽才男人
3楼-- · 2019-07-11 21:57
TEMPLATE = subdirs

This line says that library.pro is just a container for other projects, contained within the subdirectories listed in the SUBDIRS variable. Most other variables in library.pro are ignored, except CONFIG += ordered, which specifies that the subdirectories should be processed in the order in which they are given.

The subprojects which include IInterface2.h all need to have QT += concurrent in their .pro files.

查看更多
登录 后发表回答