Difference between revisions of "Including .pro Files"

From Qt Wiki
Jump to: navigation, search
Line 1: Line 1:
'''English''' [[IncludingProFiles Malay|Malay]] [[IncludingProFiles Spanish|Spanish]] [[IncludingProFiles_German|German]] [[IncludingProFiles_French|French]] [[IncludingProFiles_Bulgarian|Български]]<br />[[Category:Tools]]<br />[[Category:HowTo]]
+
'''English''' [[IncludingProFiles Malay|Malay]] [[IncludingProFiles Spanish|Spanish]] [[IncludingProFiles_German|German]] [[IncludingProFiles_French|French]] [[IncludingProFiles_Bulgarian|Български]]
 +
[[Category:Tools]]
 +
[[Category:HowTo]]
  
 
= Including pro-files into pro-files =
 
= Including pro-files into pro-files =
Line 6: Line 8:
  
 
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.
<br />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.
+
 
<br />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&amp;amp;#40;pwd&amp;amp;#41; command (on Unix/Linux only - sorry).  
+
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.
<br />Within the &quot;qmake variable reference&amp;quot;: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:<br />''' &quot;'''PWD'''&quot;:http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#pwd<br />'''''' This variable contains the full path leading to the directory where the qmake project file &amp;#40;project.pro&amp;amp;#41; is located.<br />* &quot;'''OUT_PWD'''&quot;:http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#out-pwd<br />'''''' This variable contains the full path leading to the directory where qmake places the generated Makefile.<br />* Usage of the $$ prefix is detailed &quot;here&amp;quot;:http://doc.qt.nokia.com/latest/qmake-advanced-usage.html#variables .
+
 
 +
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.
 
When having setup the include and depend paths, it is just a matter of adding to the SOURCES, HEADERS, RESOURCES and FORMS sections.
Line 14: Line 24:
 
To summarize, here is a small example:
 
To summarize, here is a small example:
  
<code>INCLUDEPATH ''= $$system&amp;amp;#40;pwd&amp;amp;#41;/include<br />DEPENDSPATH''= $$system&amp;amp;#40;pwd&amp;amp;#41;
+
<code>INCLUDEPATH ''= $$system(pwd)/include
 +
DEPENDSPATH''= $$system(pwd)
  
SOURCES ''= src/foo.cpp<br />HEADERS''= include/foo.h<br />FORMS ''= forms/foo.ui<br />RESOURCES''= foo.qrc<br /></code>
+
SOURCES ''= src/foo.cpp
 +
HEADERS''= include/foo.h
 +
FORMS ''= forms/foo.ui
 +
RESOURCES''= foo.qrc
 +
</code>
  
 
Finally, in the pro-file, simply add the pri-file by calling include:
 
Finally, in the pro-file, simply add the pri-file by calling include:
  
<code>…<br />include(support/foo/foo.pri)<br /><br /></code>
+
<code>…
 +
include(support/foo/foo.pri)
 +
 +
</code>
  
 
== Caveats ==
 
== Caveats ==

Revision as of 08:56, 25 February 2015

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.

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

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(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) …

Caveats