Auf dieser Seite

Erstellen von Projektdateien

Projektdateien enthalten alle Informationen, die qmake zum Erstellen Ihrer Anwendung, Bibliothek oder Ihres Plugins benötigt. In der Regel verwenden Sie eine Reihe von Deklarationen, um die Ressourcen im Projekt anzugeben, doch dank der Unterstützung einfacher Programmierkonstrukte können Sie unterschiedliche Erstellungsvorgänge für verschiedene Plattformen und Umgebungen beschreiben.

Elemente von Projektdateien

Das von qmake verwendete Projektdateiformat eignet sich sowohl für einfache als auch für relativ komplexe Build-Systeme. Einfache Projektdateien verwenden einen übersichtlichen deklarativen Stil und definieren Standardvariablen, um die im Projekt verwendeten Quell- und Header-Dateien anzugeben. Komplexe Projekte können Kontrollflussstrukturen nutzen, um den Build-Prozess genau abzustimmen.

In den folgenden Abschnitten werden die verschiedenen Arten von Elementen beschrieben, die in Projektdateien verwendet werden.

Variablen

In einer Projektdatei werden Variablen verwendet, um Listen von Zeichenketten zu speichern. In den einfachsten Projekten informieren diese Variablen qmake über die zu verwendenden Konfigurationsoptionen oder liefern Dateinamen und Pfade, die im Build-Prozess verwendet werden sollen.

qmake sucht in jeder Projektdatei nach bestimmten Variablen und verwendet deren Inhalt, um zu bestimmen, was es in eine Makefile schreiben soll. Beispielsweise werden die Wertelisten in den Variablen HEADERS und SOURCES verwendet, um qmake über Header- und Quelldateien im selben Verzeichnis wie die Projektdatei zu informieren.

Variablen können auch intern verwendet werden, um temporäre Wertelisten zu speichern, und bestehende Wertelisten können mit neuen Werten überschrieben oder erweitert werden.

Der folgende Ausschnitt veranschaulicht, wie Wertelisten Variablen zugewiesen werden:

HEADERS = mainwindow.h paintwidget.h

Die Werteliste einer Variablen wird auf folgende Weise erweitert:

SOURCES = main.cpp mainwindow.cpp \
          paintwidget.cpp
CONFIG += console

Hinweis: Die erste Zuweisung umfasst nur Werte, die in derselben Zeile wie die Variable „ HEADERS “ angegeben sind. Bei der zweiten Zuweisung werden die Werte der Variable „ SOURCES “ mithilfe eines Backslashes (\) auf mehrere Zeilen verteilt.

Die Variable `CONFIG` ist eine weitere spezielle Variable, die qmake bei der Erstellung eines Makefiles verwendet. Sie wird unter „Allgemeine Konfiguration“ behandelt. Im obigen Codeausschnitt wird ` console ` zur Liste der bereits in ` CONFIG` enthaltenen Werte hinzugefügt.

Die folgende Tabelle listet einige häufig verwendete Variablen auf und beschreibt deren Inhalt. Eine vollständige Liste der Variablen und ihrer Beschreibungen finden Sie unter „Variablen“.

VariableInhalt
CONFIGAllgemeine Projektkonfigurationsoptionen.
DESTDIRDas Verzeichnis, in dem die ausführbare Datei oder Binärdatei abgelegt wird.
FORMSEine Liste der UI-Dateien, die vom User Interface Compiler (uic) verarbeitet werden sollen.
HEADERSEine Liste der Dateinamen von Header-Dateien (.h), die beim Erstellen des Projekts verwendet werden.
QTEine Liste der im Projekt verwendeten Qt-Module.
RESOURCENEine Liste der Ressourcendateien (.qrc), die in das endgültige Projekt aufgenommen werden sollen. Weitere Informationen zu diesen Dateien finden Sie unter „Das Qt-Ressourcensystem “.
SOURCESEine Liste der Quellcode-Dateien, die beim Erstellen des Projekts verwendet werden sollen.
VORLAGEDie für das Projekt zu verwendende Vorlage. Diese legt fest, ob das Ergebnis des Build-Prozesses eine Anwendung, eine Bibliothek oder ein Plugin sein wird.

Der Inhalt einer Variablen kann ausgelesen werden, indem dem Variablennamen „ $$ “ vorangestellt wird. Dies kann verwendet werden, um den Inhalt einer Variablen einer anderen zuzuweisen:

TEMP_SOURCES = $$SOURCES

Der Operator „ $$ “ wird häufig in Verbindung mit integrierten Funktionen verwendet, die auf Zeichenketten und Wertelisten angewendet werden. Weitere Informationen finden Sie unter „qmake-Sprache“.

Leerzeichen

Normalerweise trennen Leerzeichen die Werte bei Variablenzuweisungen. Um Werte anzugeben, die Leerzeichen enthalten, müssen Sie die Werte in doppelte Anführungszeichen setzen:

DEST = "Program Files"

Der in Anführungszeichen gesetzte Text wird als ein einziges Element in der Liste der von der Variablen gehaltenen Werte behandelt. Ein ähnlicher Ansatz wird bei Pfaden mit Leerzeichen verwendet, insbesondere bei der Definition der Variablen `INCLUDEPATH ` und `LIBS` für die Windows-Plattform:

win32:INCLUDEPATH += "C:/mylibs/extra headers"
unix:INCLUDEPATH += "/home/user/extra headers"

Kommentare

Sie können Kommentare zu Projektdateien hinzufügen. Kommentare beginnen mit dem Zeichen „ # “ und erstrecken sich bis zum Ende derselben Zeile. Beispiel:

# Comments usually start at the beginning of a line, but they
# can also follow other content on the same line.

Um das Zeichen „ # “ in Variablenzuweisungen einzufügen, muss der Inhalt der integrierten Variablen „LITERAL_HASH“ verwendet werden.

Eingebaute Funktionen und Kontrollfluss

qmake stellt eine Reihe von integrierten Funktionen zur Verfügung, mit denen der Inhalt von Variablen verarbeitet werden kann. Die in einfachen Projektdateien am häufigsten verwendete Funktion ist die Funktion `include()`, die einen Dateinamen als Argument entgegennimmt. Der Inhalt der angegebenen Datei wird an der Stelle in die Projektdatei eingebunden, an der die Funktion ` include ` verwendet wird. Die Funktion ` include ` wird am häufigsten zum Einbinden anderer Projektdateien verwendet:

include(other.pro)

Die Unterstützung für bedingte Strukturen wird über Gültigkeitsbereiche bereitgestellt, die sich wie ` if `-Anweisungen in Programmiersprachen verhalten:

win32 {
    SOURCES += paintwidget_win.cpp
}

Die Zuweisungen innerhalb der geschweiften Klammern werden nur ausgeführt, wenn die Bedingung wahr ist. In diesem Fall muss die Option „ win32 CONFIG“ gesetzt sein. Unter Windows geschieht dies automatisch. Die öffnende geschweifte Klammer muss in derselben Zeile wie die Bedingung stehen.

Komplexere Operationen mit Variablen, die normalerweise Schleifen erfordern würden, werden durch integrierte Funktionen wie `find()`, `unique()` und `count()` bereitgestellt. Diese und viele weitere Funktionen dienen der Bearbeitung von Zeichenketten und Pfaden, der Unterstützung von Benutzereingaben sowie dem Aufruf externer Tools. Weitere Informationen zur Verwendung der Funktionen finden Sie unter „qmake-Sprache“. Eine Liste aller Funktionen und deren Beschreibungen finden Sie unter „Ersetzungsfunktionen “ und „Testfunktionen“.

Projektvorlagen

Die Variable TEMPLATE dient dazu, den Typ des zu erstellenden Projekts zu definieren. Wenn diese in der Projektdatei nicht deklariert ist, geht qmake davon aus, dass eine Anwendung erstellt werden soll, und generiert zu diesem Zweck ein entsprechendes Makefile (oder eine gleichwertige Datei).

Die folgende Tabelle fasst die verfügbaren Projekttypen zusammen und beschreibt die Dateien, die qmake für jeden dieser Typen generiert:

Vorlageqmake-Ausgabe
app (Standard)Makefile zum Erstellen einer Anwendung.
libMakefile zum Erstellen einer Bibliothek.
auxMakefile, um nichts zu erstellen. Verwenden Sie dies, wenn zum Erstellen des Ziels kein Compiler aufgerufen werden muss, beispielsweise weil Ihr Projekt in einer interpretierten Sprache geschrieben ist.

Hinweis: Dieser Vorlagentyp ist nur für Makefile-basierte Generatoren verfügbar. Insbesondere funktioniert er nicht mit den Generatoren „vcxproj“ und „Xcode“.

subdirsMakefile, das Regeln für die über die Variable SUBDIRS angegebenen Unterverzeichnisse enthält. Jedes Unterverzeichnis muss eine eigene Projektdatei enthalten.
vcappVisual Studio-Projektdatei zum Erstellen einer Anwendung.
vclibVisual Studio-Projektdatei zum Erstellen einer Bibliothek.
vcsubdirsVisual Studio-Lösungsdatei zum Erstellen von Projekten in Unterverzeichnissen.

Hinweise zum Erstellen von Projektdateien für Projekte, die die Vorlagen „ app “ und „ lib “ verwenden, finden Sie unter „Erstellen gängiger Projekttypen “.

Bei Verwendung der Vorlage „ subdirs “ generiert qmake eine Makefile-Datei, um jedes angegebene Unterverzeichnis zu überprüfen, dort gefundene Projektdateien zu verarbeiten und das plattformspezifische „ make “-Tool auf die neu erstellte Makefile-Datei anzuwenden. Die Variable „ SUBDIRS “ enthält eine Liste aller zu verarbeitenden Unterverzeichnisse.

Allgemeine Konfiguration

Die Variable ` CONFIG ` legt die Optionen und Funktionen fest, mit denen das Projekt konfiguriert werden soll.

Das Projekt kann im Release-Modus, im Debug-Modus oder in beiden Modi erstellt werden. Wenn sowohl „debug“ als auch „release“ angegeben sind, hat die zuletzt angegebene Angabe Vorrang. Wenn Sie die Option „ debug_and_release “ angeben, um sowohl die Debug- als auch die Release-Version eines Projekts zu erstellen, enthält das von qmake generierte Makefile eine Regel, die beide Versionen erstellt. Diese kann wie folgt aufgerufen werden:

make all

Durch Hinzufügen der Option „ build_all “ zur Variablen „ CONFIG “ wird diese Regel zur Standardregel beim Erstellen des Projekts.

Hinweis: Jede der in der Variablen „ CONFIG “ angegebenen Optionen kann auch als Gültigkeitsbereichsbedingung verwendet werden. Mit der integrierten Funktion CONFIG() können Sie prüfen, ob bestimmte Konfigurationsoptionen vorhanden sind. Die folgenden Zeilen zeigen beispielsweise die Funktion als Bedingung in einem Gültigkeitsbereich, um zu prüfen, ob nur die Option „ opengl “ verwendet wird:

CONFIG(opengl) {
    message(Building with OpenGL support.)
} else {
    message(OpenGL support is not available.)
}

Dadurch lassen sich unterschiedliche Konfigurationen für „ release “- und „ debug “-Builds definieren. Weitere Informationen finden Sie unter „Verwenden von Bereichen“.

Die folgenden Optionen legen den Typ des zu erstellenden Projekts fest.

Hinweis: Einige dieser Optionen werden nur wirksam, wenn sie auf der entsprechenden Plattform verwendet werden.

OptionBeschreibung
qtDas Projekt ist eine Qt-Anwendung und sollte gegen die Qt-Bibliothek verknüpft werden. Mit der Variablen „ QT “ können Sie festlegen, welche zusätzlichen Qt-Module Ihre Anwendung benötigt. Dieser Wert wird standardmäßig hinzugefügt, Sie können ihn jedoch entfernen, um qmake für ein Nicht-Qt-Projekt zu verwenden.
x11Das Projekt ist eine X11-Anwendung oder -Bibliothek. Dieser Wert wird nicht benötigt, wenn das Ziel Qt verwendet.

Die Projektvorlagen für Anwendungen und Bibliotheken bieten Ihnen speziellere Konfigurationsoptionen zur Feinabstimmung des Build-Prozesses. Die Optionen werden im Abschnitt „Erstellen gängiger Projekttypen“ ausführlich erläutert.

Wenn Ihre Anwendung beispielsweise die Qt-Bibliothek verwendet und Sie sie im Modus „ debug “ erstellen möchten, enthält Ihre Projektdatei die folgende Zeile:

CONFIG += qt debug

Hinweis: Sie müssen „+=“ statt „=“ verwenden, da qmake sonst nicht in der Lage ist, anhand der Qt-Konfiguration die für Ihr Projekt erforderlichen Einstellungen zu ermitteln.

Qt-Bibliotheken deklarieren

Wenn die Variable CONFIG den Wert „ qt “ enthält, ist die Unterstützung von qmake für Qt-Anwendungen aktiviert. Dadurch lässt sich genau festlegen, welche Qt-Module von Ihrer Anwendung verwendet werden. Dies wird über die Variable QT erreicht, mit der die benötigten Erweiterungsmodule deklariert werden können. Beispielsweise können wir die XML- und Netzwerkmodule wie folgt aktivieren:

QT += network xml

Hinweis: „ QT “ umfasst standardmäßig die Module „ core “ und „ gui “, sodass die obige Deklaration die Netzwerk- und XML-Module zu dieser Standardliste hinzufügt. Die folgende Zuweisung lässt die Standardmodule weg und führt zu Fehlern, wenn der Quellcode der Anwendung kompiliert wird:

QT = network xml # This will omit the core and gui modules.

Wenn Sie ein Projekt ohne das Modul „ gui “ erstellen möchten, müssen Sie es mit dem Operator „-=“ ausschließen. Standardmäßig enthält „ QT “ sowohl „ core “ als auch „ gui “, sodass die folgende Zeile dazu führt, dass ein minimales Qt-Projekt erstellt wird:

QT -= gui # Only the core module is used.

Eine Liste der Qt-Module, die Sie der Variablen „ QT “ hinzufügen können, finden Sie unter QT.

Konfigurationsfunktionen

qmake kann mit zusätzlichen Konfigurationsfunktionen eingerichtet werden, die in Feature-Dateien (.prf) festgelegt sind. Diese zusätzlichen Funktionen bieten häufig Unterstützung für benutzerdefinierte Werkzeuge, die während des Build-Prozesses verwendet werden. Um eine Funktion zum Build-Prozess hinzuzufügen, fügen Sie den Funktionsnamen (den Stamm des Feature-Dateinamens) an die Variable ` CONFIG ` an.

Beispielsweise kann qmake den Build-Prozess so konfigurieren, dass er externe Bibliotheken nutzt, die von pkg-config unterstützt werden, wie beispielsweise die D-Bus- und Ogg-Bibliotheken, und zwar mit den folgenden Zeilen:

CONFIG += link_pkgconfig
PKGCONFIG += ogg dbus-1

Weitere Informationen zum Hinzufügen von Funktionen finden Sie unter „Hinzufügen neuer Konfigurationsfunktionen“.

Andere Bibliotheken deklarieren

Wenn Sie in Ihrem Projekt zusätzlich zu den mit Qt mitgelieferten Bibliotheken weitere Bibliotheken verwenden, müssen Sie diese in Ihrer Projektdatei angeben.

Die Pfade, in denen qmake nach Bibliotheken sucht, sowie die spezifischen Bibliotheken, gegen die verknüpft werden soll, können der Liste der Werte in der Variablen `LIBS` hinzugefügt werden. Sie können die Pfade zu den Bibliotheken angeben oder die Unix-Konvention zur Angabe von Bibliotheken und Pfaden verwenden.

Die folgenden Zeilen zeigen beispielsweise, wie eine Bibliothek angegeben werden kann:

LIBS += -L/usr/local/lib -lmath

Die Pfade zu den Header-Dateien können auf ähnliche Weise mithilfe der Variablen ` INCLUDEPATH ` angegeben werden.

Um beispielsweise mehrere Pfade hinzuzufügen, in denen nach Header-Dateien gesucht werden soll:

INCLUDEPATH = c:/msdev/include d:/stl/include

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.