Including .pro Files

From Qt Wiki
Revision as of 14:32, 23 February 2015 by Maintenance script (talk | contribs)
Jump to navigation Jump to search

English Malay Spanish German French Български

Including pro-files into pro-files

QMake's project files sometimes need to rely on the include feature. This is a great tool, but there are some tricks of the trade to be aware of.

First up, a convention, pro-files meant for inclusion in other pro-files are commonly named .pri, just to indicate that they are for inclusion. This also means that qmake does not find them, but uses the appropriate pro-file instead.
In a pro-file, you have two important variables: INCLUDEPATH and DEPENDPATH. The first is used by the C++ compiler when resolving #include statements, while the latter is used by qmake when trying to determine what to build in which order.
To create a truly movable source tree, the pri-files update these variables appropriately. My trick to do that is to rely on the current working directory. You find that by running the $$system(pwd) command (on Unix/Linux only - sorry).
Within the "qmake variable reference":http://doc.qt.nokia.com/4.7/qmake-variable-reference.html , there are variables that may help find the current working directory (Tested on Windows ). A couple of these are:
"PWD":http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#pwd
'
This variable contains the full path leading to the directory where the qmake project file (project.pro) is located.
* "OUT_PWD":http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#out-pwd
'
This variable contains the full path leading to the directory where qmake places the generated Makefile.
* Usage of the $$ prefix is detailed "here":http://doc.qt.nokia.com/latest/qmake-advanced-usage.html#variables .

When having setup the include and depend paths, it is just a matter of adding to the SOURCES, HEADERS, RESOURCES and FORMS sections.

To summarize, here is a small example:

INCLUDEPATH ''= $$system&amp;amp;#40;pwd&amp;amp;#41;/include<br />DEPENDSPATH''= $$system&amp;amp;#40;pwd&amp;amp;#41;

SOURCES ''= src/foo.cpp<br />HEADERS''= include/foo.h<br />FORMS ''= forms/foo.ui<br />RESOURCES''= foo.qrc<br />

Finally, in the pro-file, simply add the pri-file by calling include:

<br />include(support/foo/foo.pri)<br /><br />

Caveats