Auf dieser Seite

Hinweise zu den Plattformen

Viele plattformübergreifende Projekte lassen sich mit den grundlegenden Konfigurationsfunktionen von qmake bewältigen. Auf einigen Plattformen ist es jedoch manchmal sinnvoll oder sogar notwendig, plattformspezifische Funktionen zu nutzen. qmake kennt viele dieser Funktionen, auf die über bestimmte Variablen zugegriffen werden kann, die nur auf den Plattformen wirksam sind, auf denen sie relevant sind.

macOS, iOS, tvOS und watchOS

Zu den plattformspezifischen Funktionen gehören die Unterstützung für die Erstellung von Universal-Binärdateien, Frameworks und Bundles.

Quell- und Binärpakete

Die in Quellpaketen mitgelieferte Version von qmake ist etwas anders konfiguriert als die in Binärpaketen enthaltene, da sie eine andere Funktionsspezifikation verwendet. Während das Quellpaket in der Regel die Spezifikation „ macx-g++ “ verwendet, ist das Binärpaket typischerweise so konfiguriert, dass es die Spezifikation „ macx-xcode “ nutzt.

Benutzer beider Pakete können diese Konfiguration überschreiben, indem sie qmake mit der Option „ -spec “ aufrufen (weitere Informationen finden Sie unter „Ausführen von qmake“ ). Um beispielsweise qmake aus einem Binärpaket zu verwenden und eine Makefile in einem Projektverzeichnis zu erstellen, führen Sie den folgenden Befehl aus:

qmake -spec macx-g++

Verwendung von Frameworks

qmake kann automatisch Build-Regeln für die Verknüpfung mit Frameworks im Standard-Framework-Verzeichnis unter macOS generieren, das sich unter /Library/Frameworks/ befindet.

Andere Verzeichnisse als das Standard-Framework-Verzeichnis müssen dem Build-System angegeben werden. Dies geschieht durch Anhängen von Linker-Optionen an die Variable `LIBS`, wie im folgenden Beispiel gezeigt:

LIBS += -F/path/to/framework/directory/

Das Framework selbst wird eingebunden, indem die Optionen „ -framework “ sowie der Name des Frameworks an die Variable „LIBS“ angehängt werden:

LIBS += -framework TheFramework

Frameworks erstellen

Jedes beliebige Bibliotheksprojekt kann so konfiguriert werden, dass die resultierende Bibliotheksdatei in einem Framework abgelegt und damit bereit für die Bereitstellung ist. Richten Sie dazu das Projekt so ein, dass die Vorlage „lib “ verwendet wird, und fügen Sie die Option „ lib_bundle “ zur Variablen „CONFIG“ hinzu:

TEMPLATE = lib
CONFIG += lib_bundle

Die mit der Bibliothek verbundenen Daten werden über die Variable ` QMAKE_BUNDLE_DATA ` festgelegt. Diese enthält Elemente, die zusammen mit einem Bibliotheksbündel installiert werden, und wird häufig verwendet, um eine Sammlung von Header-Dateien anzugeben, wie im folgenden Beispiel:

FRAMEWORK_HEADERS.version = Versions
FRAMEWORK_HEADERS.files = path/to/header_one.h path/to/header_two.h
FRAMEWORK_HEADERS.path = Headers
QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS

Mit der Variablen „ FRAMEWORK_HEADERS “ legen Sie die von einem bestimmten Framework benötigten Header fest. Durch das Anhängen an die Variable „ QMAKE_BUNDLE_DATA “ wird sichergestellt, dass Informationen zu diesen Headern der Sammlung von Ressourcen hinzugefügt werden, die zusammen mit dem Bibliotheksbündel installiert werden. Außerdem werden der Name und die Version des Frameworks durch die Variablen ` QMAKE_FRAMEWORK_BUNDLE_NAME ` und `QMAKE_FRAMEWORK_VERSION ` angegeben. Standardmäßig werden die für diese Variablen verwendeten Werte aus den Variablen ` TARGET ` und `VERSION ` entnommen.

Weitere Informationen zur Bereitstellung von Anwendungen und Bibliotheken finden Sie unter „Qt für macOS – Bereitstellung “.

Erstellen und Verschieben von Xcode-Projekten

Unter macOS können Entwickler aus einer vorhandenen qmake-Projektdatei Xcode-Projektdateien generieren. Beispiel:

qmake -spec macx-xcode project.pro

Hinweis: Wenn ein Projekt später auf der Festplatte verschoben wird, muss qmake erneut ausgeführt werden, um die Projektdatei zu verarbeiten und eine neue Xcode-Projektdatei zu erstellen.

Gleichzeitige Unterstützung von zwei Build-Zielen

Die Umsetzung ist derzeit nicht möglich, da sich das Xcode-Konzept der „Active Build Configurations“ konzeptionell von der qmake-Vorstellung von Build-Zielen unterscheidet.

Die Einstellungen für „Aktive Build-Konfigurationen“ in Xcode dienen dazu, Xcode-Konfigurationen, Compiler-Flags und ähnliche Build-Optionen anzupassen. Im Gegensatz zu Visual Studio erlaubt Xcode nicht die Auswahl bestimmter Bibliotheksdateien je nachdem, ob Debug- oder Release-Build-Konfigurationen ausgewählt sind. Die qmake-Einstellungen für Debug und Release steuern, welche Bibliotheksdateien mit der ausführbaren Datei verknüpft werden.

Derzeit ist es nicht möglich, Dateien in den Xcode-Konfigurationseinstellungen über die von qmake generierte Xcode-Projektdatei festzulegen. Die Art und Weise, wie die Bibliotheken verlinkt werden, erfolgt in der Phase „Frameworks & Libraries“ im Xcode-Build-System.

Zudem wird die ausgewählte „Active Build Configuration“ in einer .pbxuser-Datei gespeichert, die von Xcode beim ersten Laden generiert und nicht von qmake erstellt wird.

Windows

Zu den plattformspezifischen Funktionen gehören die Unterstützung von Windows-Ressourcendateien (bereitgestellt oder automatisch generiert), die Erstellung von Visual Studio-Projektdateien sowie die Verarbeitung von Manifestdateien bei der Bereitstellung von Qt-Anwendungen, die mit Visual Studio 2005 oder höher entwickelt wurden.

Hinzufügen von Windows-Ressourcendateien

In diesem Abschnitt wird beschrieben, wie man eine Windows-Ressourcendatei mit qmake so verarbeitet, dass sie in eine ausführbare Anwendungsdatei (EXE) oder eine dynamische Linkbibliothek (DLL) eingebunden wird. qmake kann optional eine entsprechend gefüllte Windows-Ressourcendatei automatisch generieren.

Eine eingebundene Windows-Ressourcendatei kann zahlreiche Elemente enthalten, auf die die zugehörige EXE- oder DLL-Datei zugreifen kann. Für den plattformunabhängigen Zugriff auf eingebundene Ressourcen sollte jedoch das Qt-Ressourcensystem verwendet werden. Auf einige Standardelemente der eingebundenen Windows-Ressourcendatei greift jedoch Windows selbst zu. Beispielsweise wird im Windows-Explorer die Registerkarte „Version“ der Dateieigenschaften durch Ressourcenelemente ausgefüllt. Zudem wird das Programmsymbol der EXE-Datei aus diesen Elementen gelesen. Daher empfiehlt es sich, bei einer mit Qt erstellten Windows-EXE- oder DLL-Datei beide Techniken gleichzeitig zu nutzen: plattformunabhängige Ressourcen über das Qt-Ressourcensystem einzubinden und Windows-spezifische Ressourcen über eine Windows-Ressourcendatei hinzuzufügen.

In der Regel wird ein Skript zur Ressourcendefinition (eine .rc-Datei) zu einer Windows-Ressourcendatei kompiliert. Innerhalb der Microsoft-Toolchain generiert das RC-Tool eine .res-Datei, die mit dem Microsoft-Linker zu einer EXE- oder DLL-Datei verknüpft werden kann. Die MinGW-Toolchain verwendet das windres-Tool, um eine .o-Datei zu generieren, die mit dem MinGW-Linker zu einer EXE- oder DLL-Datei verknüpft werden kann.

Die optionale automatische Generierung einer entsprechend gefüllten .rc-Datei durch qmake wird durch das Setzen mindestens einer der Systemvariablen VERSION und RC_ICONS ausgelöst. Die generierte .rc-Datei wird automatisch kompiliert und verknüpft. Elemente, die der .rc-Datei hinzugefügt werden, werden durch die Systemvariablen QMAKE_TARGET_COMPANY, QMAKE_TARGET_DESCRIPTION, QMAKE_TARGET_COPYRIGHT, QMAKE_TARGET_PRODUCT, QMAKE_TARGET_ORIGINAL_FILENAME, QMAKE_TARGET_INTERNALNAME, QMAKE_TARGET_COMMENTS, QMAKE_TARGET_TRADEMARKS, QMAKE_MANIFEST, RC_CODEPAGE, RC_ICONS, RC_LANG und VERSION.

Falls diese Elemente nicht ausreichen, verfügt qmake über die beiden Systemvariablen RC_FILE und RES_FILE, die direkt auf eine extern erstellte .rc- oder .res-Datei verweisen. Durch das Setzen einer dieser Variablen wird die angegebene Datei mit der EXE- oder DLL-Datei verknüpft.

Hinweis: Die Erstellung der .rc-Datei durch qmake wird blockiert, wenn RC_FILE oder RES_FILE gesetzt ist. In diesem Fall nimmt qmake keine weiteren Änderungen an der angegebenen .rc-Datei oder der .res- bzw. .o-Datei vor; die Variablen zur Erstellung der .rc-Datei haben keine Auswirkung.

Erstellen von Visual Studio-Projektdateien

In diesem Abschnitt wird beschrieben, wie ein bestehendes qmake-Projekt in Visual Studio importiert wird. qmake kann aus einer Projektdatei ein Visual Studio-Projekt erstellen, das alle für die Entwicklungsumgebung erforderlichen Informationen enthält. Dies wird erreicht, indem die qmake-Projektvorlage entweder auf „ vcapp “ (für Anwendungsprojekte) oder „ vclib “ (für Bibliotheksprojekte) gesetzt wird.

Dies kann auch über eine Befehlszeilenoption festgelegt werden, zum Beispiel:

qmake -tp vc

Es ist möglich, „ .vcproj “-Dateien in Unterverzeichnissen und eine „ .sln “-Datei im Hauptverzeichnis rekursiv zu generieren, indem man Folgendes eingibt:

qmake -tp vc -r

Jedes Mal, wenn Sie die Projektdatei aktualisieren, müssen Sie qmake ausführen, um ein aktualisiertes Visual Studio-Projekt zu generieren.

Hinweis: Wenn Sie das Visual Studio-Add-in verwenden, wählen Sie „Qt > Aus .pro-Datei importieren“, um „ .pro “-Dateien zu importieren.

Visual Studio-Manifestdateien

Achten Sie bei der Bereitstellung von Qt-Anwendungen, die mit Visual Studio 2005 oder höher erstellt wurden, darauf, dass die beim Verknüpfen der Anwendung erstellte Manifestdatei korrekt behandelt wird. Bei Projekten, die DLLs generieren, erfolgt dies automatisch.

Das Entfernen der Manifest-Einbettung für ausführbare Anwendungsdateien kann durch die folgende Zuweisung an die Variable `CONFIG` erfolgen:

CONFIG -= embed_manifest_exe

Außerdem kann die Einbettung des Manifests für DLLs durch die folgende Zuweisung an die Variable „ CONFIG “ entfernt werden:

CONFIG -= embed_manifest_dll

Dies wird im Bereitstellungshandbuch für Windows ausführlicher behandelt.

© 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.