Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top