Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

Including .pro Files: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Some cleanup)
(Corrected wrong synctax)
Line 5: Line 5:
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.
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.
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.
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.
Line 12: Line 12:


Within the [http://doc.qt.nokia.com/4.7/qmake-variable-reference.html qmake variable reference] , there are variables that may help find the current working directory (Tested on Windows ). A couple of these are:
Within the [http://doc.qt.nokia.com/4.7/qmake-variable-reference.html qmake variable reference] , there are variables that may help find the current working directory (Tested on Windows ). A couple of these are:
''' [http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#pwd '''PWD''']
''' [http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#pwd '''PWD''']'''
'''''' This variable contains the full path leading to the directory where the qmake project file (project.pro) is located.
'''''' This variable contains the full path leading to the directory where the qmake project file (project.pro) is located.'''''
* [http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#out-pwd '''OUT_PWD''']
* [http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#out-pwd '''OUT_PWD''']
'''''' This variable contains the full path leading to the directory where qmake places the generated Makefile.
'''''' This variable contains the full path leading to the directory where qmake places the generated Makefile.'''''
* Usage of the $$ prefix is detailed [http://doc.qt.nokia.com/latest/qmake-advanced-usage.html#variables here] .
* The usage of the $$ prefix is detailed [http://doc.qt.nokia.com/latest/qmake-advanced-usage.html#variables here].


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


To summarize, here is a small example:
To summarize, here is a small example:


<code>INCLUDEPATH ''= $$system(pwd)/include
<code>INCLUDEPATH += $$system(pwd)/include
DEPENDSPATH''= $$system(pwd)
DEPENDSPATH += $$system(pwd)


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



Revision as of 16:19, 20 January 2020

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Broken links
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

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 , there are variables that may help find the current working directory (Tested on Windows ). A couple of these are: PWD ' This variable contains the full path leading to the directory where the qmake project file (project.pro) is located.

' This variable contains the full path leading to the directory where qmake places the generated Makefile.

  • The usage of the $$ prefix is detailed here.

When having set up the include and depend on 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(pwd)/include
DEPENDSPATH += $$system(pwd)

SOURCES += src/foo.cpp
HEADERS += include/foo.h
FORMS += forms/foo.ui
RESOURCES += foo.qrc

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


include(support/foo/foo.pri)