是否可以修改父子目录项目中的QT qmake变量?

时间:2014-03-08 14:18:21

标签: c++ qt qt5 qmake qtconcurrent

我的共享库项目结构如下:

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 个答案:

答案 0 :(得分:1)

TEMPLATE = subdirs

这一行表示library.pro只是其他项目的容器,包含在SUBDIRS变量中列出的子目录中。除了CONFIG += ordered之外,library.pro中的大多数其他变量都被忽略,它指定子目录应按给定顺序进行处理。

包含IInterface2.h的子项目都需要在其.pro文件中包含QT += concurrent

答案 1 :(得分:0)

  

我做错了什么?

你认为qmake会解析的事实,然而这并不是qmake目前的工作方式。 SUBDIRS意味着它只会查看子文件夹。