qt_standard_project_setup

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. 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.
  • Für Windows wird die Variable CMAKE_RUNTIME_OUTPUT_DIRECTORY auf ${CMAKE_CURRENT_BINARY_DIR} gesetzt, wenn sie nicht bereits gesetzt ist.
  • 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 sich für die Änderungen aus neueren Qt-Versionen entscheidet. Wenn REQUIRES angegeben wird, werden alle vorgeschlagenen Änderungen, die in Qt bis REQUIRES eingeführt wurden, aktiviert, und die Verwendung einer älteren Qt-Version führt zu einem Fehler. Wenn zusätzlich SUPPORTS_UP_TO angegeben wurde, werden alle neuen Änderungen, die in Versionen bis SUPPORTS_UP_TO eingeführt wurden, ebenfalls aktiviert (aber die Verwendung einer älteren Qt-Version ist kein Fehler). Dies ist ähnlich wie das Policy-Konzept von CMake (vgl. cmake_policy).

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

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