Auf dieser Seite

qt_standard_projekt_aufstellung

Setzt projektweite Standardeinstellungen auf eine Standardanordnung.

Der Befehl ist in der Core Komponente des Qt6 Pakets definiert, das so geladen werden kann:

find_package(Qt6 REQUIRED COMPONENTS Core)

Dieses Kommando wurde in Qt 6.3 eingeführt.

Synopse

qt_standard_project_setup(
    [REQUIRES <version>]
    [SUPPORTS_UP_TO <version>]
    [I18N_TRANSLATED_LANGUAGES <language...>]
    [I18N_SOURCE_LANGUAGE <language>]
)

Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_standard_project_setup(). Es unterstützt den gleichen Satz von Argumenten wie dieser Befehl.

Beschreibung

Dieser Befehl vereinfacht die Aufgabe, eine typische Qt-Anwendung einzurichten. Er wird normalerweise unmittelbar nach dem ersten find_package(Qt6) -Aufruf aufgerufen, normalerweise in der obersten Datei CMakeLists.txt und bevor irgendwelche Ziele definiert wurden. Wenn Sie ihn später aufrufen, gilt er nicht für alle zuvor definierten Ziele, was zu verwirrenden Ergebnissen führen kann. Es macht die folgenden Dinge:

  • Die CMake-Standardvariablen CMAKE_AUTOMOC und CMAKE_AUTOUIC werden auf true gesetzt, wenn sie nicht bereits definiert sind. Dies aktiviert standardmäßig alle Qt-bezogenen Autogen-Funktionen für nachfolgend erstellte Targets im aktuellen Verzeichnisbereich und darunter.
  • Das GNUInstallDirs-Modul von CMake wird automatisch eingebunden. Es definiert geeignete Voreinstellungen für Variablen wie CMAKE_INSTALL_BINDIR, CMAKE_INSTALL_LIBDIR, und so weiter.
  • Wenn die Variable CMAKE_RUNTIME_OUTPUT_DIRECTORY unter Windows nicht bereits gesetzt ist, wird sie auf ${CMAKE_CURRENT_BINARY_DIR} gesetzt.
  • Wenn Sie andere Plattformen als Apple oder Windows anvisieren, wird CMAKE_INSTALL_RPATH wie unten beschrieben erweitert.
  • CMake's USE_FOLDERS Eigenschaft ist auf ON gesetzt und QT_TARGETS_FOLDER ist auf QtInternalTargets gesetzt. IDEs, die Ordner unterstützen, zeigen Qt-interne Ziele in diesem Ordner an.

Seit Qt 6.5 ist es möglich, das Standardverhalten der CMake-API von Qt zu ändern, indem man die Verhaltensänderungen neuerer Qt-Versionen über Qt-CMake-Policies einstellt. Dies ähnelt dem CMake-eigenen Policy-Konzept (vgl. cmake_policy). Wenn REQUIRES angegeben wird, werden alle Richtlinien, die in Qt-Versionen bis einschließlich REQUIRES eingeführt wurden, automatisch auf NEW gesetzt, und die Verwendung einer älteren Qt-Version wird zu einem Fehler führen. Die Angabe von REQUIRES 6.8 aktiviert zum Beispiel die Richtlinien QTP0001 bis QTP0005. Wenn auch SUPPORTS_UP_TO angegeben wird, werden Richtlinien bis zu dieser Version ebenfalls aktiviert, ohne dass diese spezielle Qt-Version vorhanden sein muss.

Die folgenden Richtlinien sind verfügbar:

QTP0001

':/qt/qml/' ist das Standard-Ressourcenpräfix für QML-Module

QTP0002

Zieleigenschaften, die Android-spezifische Pfade angeben, können Generatorausdrücke enthalten.

QTP0003

Berücksichtigen Sie den Wert BUILD_SHARED_LIBS beim Erstellen von Qt-Bibliotheken.

QTP0004

Zusätzliche Verzeichnisse mit QML-Dateien in einem QML-Modul benötigen zusätzliche qmldir-Dateien

QTP0005

Qt_add_qml_module-Schlüsselwörter für Abhängigkeiten akzeptieren CMake-Ziele

Siehe qt_policy für Details zum manuellen Setzen einzelner Richtlinien.

Auf Plattformen, die RPATH unterstützen (außer Apple-Plattformen), werden mit diesem Befehl zwei Werte an die Variable CMAKE_INSTALL_RPATH angehängt. $ORIGIN wird angehängt, damit Bibliotheken andere Bibliotheken, von denen sie abhängen, im gleichen Verzeichnis wie sie selbst finden. $ORIGIN/<reldir> wird ebenfalls angehängt, wobei <reldir> der relative Pfad von CMAKE_INSTALL_BINDIR zu CMAKE_INSTALL_LIBDIR ist. Dies ermöglicht es ausführbaren Programmen, die auf CMAKE_INSTALL_BINDIR installiert sind, alle Bibliotheken zu finden, von denen sie abhängen, die auf CMAKE_INSTALL_LIBDIR installiert sind. Alle Duplikate in CMAKE_INSTALL_RPATH werden entfernt. In der Praxis stellen diese beiden Werte sicher, dass ausführbare Programme und Bibliotheken ihre Link-Abhängigkeiten finden, vorausgesetzt, dass Projekte sie an den Standard-Speicherorten installieren, die der install(TARGETS)-B efehl verwendet, wenn kein Ziel explizit angegeben wird.

Um die Ordnerunterstützung für IDEs zu deaktivieren, setzen Sie USE_FOLDERS auf OFF vor oder nach dem Aufruf von qt_standard_project_setup.

Der qt_standard_project_setup() Befehl kann effektiv deaktiviert werden, indem die Variable QT_NO_STANDARD_PROJECT_SETUP auf true gesetzt wird.

Internationalisierung

Seit Qt 6.7 ist es möglich, die Sprachen, die für die Internationalisierung des Projekts verwendet werden, mit dem Argument I18N_TRANSLATED_LANGUAGES anzugeben. Siehe QT_I18N_TRANSLATED_LANGUAGES für Details.

Verwenden Sie I18N_SOURCE_LANGUAGE, um die Sprache anzugeben, in der die übersetzbaren Strings geschrieben werden. Standardmäßig wird en verwendet. Siehe QT_I18N_SOURCE_LANGUAGE für weitere Details.

Beispiel

cmake_minimum_required(VERSION 3.16...3.22)
project(MyThings)

find_package(Qt6 REQUIRED COMPONENTS Core)
qt_standard_project_setup()

qt_add_executable(MyApp main.cpp)

install(TARGETS MyApp
    BUNDLE  DESTINATION .
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

qt_generate_deploy_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})

Siehe auch qt_generate_deploy_app_script(), qt_policy, und qt_add_translations().

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