Including .pro Files/de: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
[[IncludingProFiles|English]] [[IncludingProFiles-Malay|Malay]] [[IncludingProFiles-Spanish|Spanish]] '''German''' [[IncludingProFiles-French|Französisch]]
[[Category:Tools]]<br />[[Category:HowTo]]<br />[[Category:HowTo::German]]


=Einziehen von pro-Dateien in pro-Dateien=
[[IncludingProFiles|English]] [[IncludingProFiles Malay|Malay]] [[IncludingProFiles Spanish|Spanish]] '''German''' [[IncludingProFiles French|Französisch]]


QMake’s Projektdateien müssen manchmal das Feature von includes benutzen. Es ist ein großartiges Tool, aber es gibt ein paar Tricks, die man wissen sollte:
= Einziehen von pro-Dateien in pro-Dateien =


Als erstes eine Definition: pro-Dateien, die zum Inkludieren gemacht sind, werden üblicherweise *.pri genannt. Schon alleine um zu zeigen, dass sie für das Inkludieren sind. Das bedeutet auch, dass qmake sie nicht findet, sondern die pro Dateien benutzt (als Einstiegspunkt).
QMake's Projektdateien müssen manchmal das Feature von includes benutzen. Es ist ein großartiges Tool, aber es gibt ein paar Tricks, die man wissen sollte:


In pro Dateien gibt es 2 wichtige Variablen: <span class="caps">INCLUDEPATH</span> und <span class="caps">DEPENDPATH</span>. Die erste wird an den C++ Compiler für die Verwendung bei #include Anweisungen weitergegeben, während die zweite von qmake verwendet wird, um festzustellen, was in welcher Reihenfolge erstellt werden soll.
Als erstes eine Definition: pro-Dateien, die zum Inkludieren gemacht sind, werden üblicherweise '''.pri genannt. Schon alleine um zu zeigen, dass sie für das Inkludieren sind. Das bedeutet auch, dass qmake sie nicht findet, sondern die pro Dateien benutzt (als Einstiegspunkt).
<br />In pro Dateien gibt es 2 wichtige Variablen: INCLUDEPATH und DEPENDPATH. Die erste wird an den C++ Compiler für die Verwendung bei #include Anweisungen weitergegeben, während die zweite von qmake verwendet wird, um festzustellen, was in welcher Reihenfolge erstellt werden soll.
<br />Um eine wirklich frei verschiebbare Quellstruktur zu erstellen, müssen die pri-Dateien diese Variablen entsprechend anpassen. Ein Trick ist, auf das aktuelle Verzeichnis aufzusetzen. Das findet man mittels $$system&amp;amp;#40;pwd&amp;amp;#41; heraus (leider nur unter Unix/Linux).
<br />In der &quot;qmake variable reference&amp;quot;:http://doc.qt.nokia.com/4.7/qmake-variable-reference.html , sind Variablen beschrieben, die helfen können, das aktuelle Arbeitsverzeichnis zu ermitteln (unter Windows getestet). Hier ein paar der Variablen:<br />''' &quot;'''PWD'''&quot;:http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#pwd<br />'''''' Diese Variable enthält den vollständigen Pfad zu dem Ordner, in dem sich die qmake Projektdatei befindet &amp;#40;project.pro&amp;amp;#41;.<br />* &quot;'''OUT_PWD'''&quot;:http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#out-pwd<br />'''''' Diese Variable enthält den vollständigen Pfad, wo qmake das erstellte Makefile ablegt.<br />* Die Verwendung des $$ Prefix ist &quot;hier&amp;quot;:http://doc.qt.nokia.com/latest/qmake-advanced-usage.html#variables detailliert beschrieben.


Um eine wirklich frei verschiebbare Quellstruktur zu erstellen, müssen die pri-Dateien diese Variablen entsprechend anpassen. Ein Trick ist, auf das aktuelle Verzeichnis aufzusetzen. Das findet man mittels $$system(pwd) heraus (leider nur unter Unix/Linux).
Wenn diese Pfade richtig gesetzt sind, müssen nur noch die SOURCES, HEADERS, RESOURCES und FORMS variablen gefüllt werden.


In der [http://doc.qt.nokia.com/4.7/qmake-variable-reference.html qmake variable reference] ''[doc.qt.nokia.com]'' , sind Variablen beschrieben, die helfen können, das aktuelle Arbeitsverzeichnis zu ermitteln (unter Windows getestet). Hier ein paar der Variablen:
Zusammenfassend ein kleines Beispiel:


* [http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#pwd '''<span class="caps">PWD</span>'''] ''[doc.qt.nokia.com]''
<code>INCLUDEPATH ''= $$system&amp;amp;#40;pwd&amp;amp;#41;/include<br />DEPENDSPATH''= $$system&amp;amp;#40;pwd&amp;amp;#41;
** Diese Variable enthält den vollständigen Pfad zu dem Ordner, in dem sich die qmake Projektdatei befindet (project.pro).
* [http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#out-pwd '''<span class="caps">OUT</span>_PWD'''] ''[doc.qt.nokia.com]''
** Diese Variable enthält den vollständigen Pfad, wo qmake das erstellte Makefile ablegt.
* Die Verwendung des $$ Prefix ist [http://doc.qt.nokia.com/latest/qmake-advanced-usage.html#variables hier] ''[doc.qt.nokia.com]'' detailliert beschrieben.


Wenn diese Pfade richtig gesetzt sind, müssen nur noch die <span class="caps">SOURCES</span>, <span class="caps">HEADERS</span>, <span class="caps">RESOURCES</span> und <span class="caps">FORMS</span> variablen gefüllt werden.
SOURCES ''= src/foo.cpp<br />HEADERS''= include/foo.h<br />FORMS ''= forms/foo.ui<br />RESOURCES''= foo.qrc<br /></code>


Zusammenfassend ein kleines Beispiel:
Abschließend muss in der pro-Datei noch die pri-Datei inkludiert werden:


Abschließend muss in der pro-Datei noch die pri-Datei inkludiert werden:
<code>…<br />include(support/foo/foo.pri)<br />…<br /></code>


==Warnungen==
== Warnungen ==


Diese Lösung ist zu clever für die Übersetzung. Um lrelease und lupdate zu benutzen, muss man weniger dynamische pro/pri Dateien verwenden oder einen Weg finden spezielle pro Dateien nur für die Übersetzung zu erstellen.
Diese Lösung ist zu clever für die Übersetzung. Um lrelease und lupdate zu benutzen, muss man weniger dynamische pro/pri Dateien verwenden oder einen Weg finden spezielle pro Dateien nur für die Übersetzung zu erstellen.
===Categories:===
* [[:Category:German|German]]
* [[:Category:HowTo|HowTo]]
** [[:Category:HowTo::German|German]]
* [[:Category:Tools|Tools]]

Revision as of 10:37, 24 February 2015



English Malay Spanish German Französisch

Einziehen von pro-Dateien in pro-Dateien

QMake's Projektdateien müssen manchmal das Feature von includes benutzen. Es ist ein großartiges Tool, aber es gibt ein paar Tricks, die man wissen sollte:

Als erstes eine Definition: pro-Dateien, die zum Inkludieren gemacht sind, werden üblicherweise .pri genannt. Schon alleine um zu zeigen, dass sie für das Inkludieren sind. Das bedeutet auch, dass qmake sie nicht findet, sondern die pro Dateien benutzt (als Einstiegspunkt).
In pro Dateien gibt es 2 wichtige Variablen: INCLUDEPATH und DEPENDPATH. Die erste wird an den C++ Compiler für die Verwendung bei #include Anweisungen weitergegeben, während die zweite von qmake verwendet wird, um festzustellen, was in welcher Reihenfolge erstellt werden soll.
Um eine wirklich frei verschiebbare Quellstruktur zu erstellen, müssen die pri-Dateien diese Variablen entsprechend anpassen. Ein Trick ist, auf das aktuelle Verzeichnis aufzusetzen. Das findet man mittels $$system&amp;#40;pwd&amp;#41; heraus (leider nur unter Unix/Linux).
In der "qmake variable reference&quot;:http://doc.qt.nokia.com/4.7/qmake-variable-reference.html , sind Variablen beschrieben, die helfen können, das aktuelle Arbeitsverzeichnis zu ermitteln (unter Windows getestet). Hier ein paar der Variablen:
"PWD":http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#pwd
'
Diese Variable enthält den vollständigen Pfad zu dem Ordner, in dem sich die qmake Projektdatei befindet &#40;project.pro&amp;#41;.
* "OUT_PWD":http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#out-pwd
'
Diese Variable enthält den vollständigen Pfad, wo qmake das erstellte Makefile ablegt.
* Die Verwendung des $$ Prefix ist "hier&quot;:http://doc.qt.nokia.com/latest/qmake-advanced-usage.html#variables detailliert beschrieben.

Wenn diese Pfade richtig gesetzt sind, müssen nur noch die SOURCES, HEADERS, RESOURCES und FORMS variablen gefüllt werden.

Zusammenfassend ein kleines Beispiel:

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 />

Abschließend muss in der pro-Datei noch die pri-Datei inkludiert werden:

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

Warnungen

Diese Lösung ist zu clever für die Übersetzung. Um lrelease und lupdate zu benutzen, muss man weniger dynamische pro/pri Dateien verwenden oder einen Weg finden spezielle pro Dateien nur für die Übersetzung zu erstellen.