Sur cette page

qt_standard_project_setup

Configure les valeurs par défaut de l'ensemble du projet en fonction d'un arrangement standard.

La commande est définie dans le composant Core du paquetage Qt6, qui peut être chargé comme suit :

find_package(Qt6 REQUIRED COMPONENTS Core)

Cette commande a été introduite dans Qt 6.3.

Synopsis

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

Si les commandes sans version sont désactivées, utilisez qt6_standard_project_setup() à la place. Elle prend en charge le même ensemble d'arguments que cette commande.

Description de la commande

Cette commande simplifie la mise en place d'une application Qt typique. Elle est généralement appelée immédiatement après le premier appel à find_package(Qt6), normalement dans le fichier de premier niveau CMakeLists.txt et avant que toute cible n'ait été définie. Si vous l'appelez plus tard, elle ne s'applique pas aux cibles définies auparavant, ce qui peut entraîner une certaine confusion. Il fait les choses suivantes :

  • Les variables CMake standard CMAKE_AUTOMOC et CMAKE_AUTOUIC sont mises à vrai si elles ne sont pas déjà définies. Cela active par défaut toutes les fonctionnalités autogènes liées à Qt pour les cibles créées ultérieurement dans le répertoire actuel (scope) et en dessous.
  • Le module GNUInstallDirs de CMake est automatiquement inclus. Il définit les valeurs par défaut appropriées pour les variables telles que CMAKE_INSTALL_BINDIR, CMAKE_INSTALL_LIBDIR, et ainsi de suite.
  • Pour Windows, si la variable CMAKE_RUNTIME_OUTPUT_DIRECTORY n'est pas déjà définie, elle sera définie à ${CMAKE_CURRENT_BINARY_DIR}.
  • Pour les plates-formes autres qu'Apple ou Windows, CMAKE_INSTALL_RPATH sera complété comme décrit ci-dessous.
  • La propriété USE_FOLDERS de CMake est fixée à ON, et QT_TARGETS_FOLDER est fixé à QtInternalTargets. Les IDE qui supportent les dossiers afficheront les cibles internes à Qt dans ce dossier.

Depuis Qt 6.5, il est possible de changer le comportement par défaut de l'API CMake de Qt en optant pour les changements de comportement des versions plus récentes de Qt via les politiques CMake de Qt. Ceci est similaire au concept de politique de CMake (comparez cmake_policy). Si REQUIRES est spécifié, toutes les politiques introduites dans les versions de Qt jusqu'à REQUIRES inclus sont automatiquement définies à NEW, et l'utilisation d'une version de Qt plus ancienne entraînera une erreur. Par exemple, la spécification de REQUIRES 6.8 active les politiques QTP0001 à QTP0005. Si SUPPORTS_UP_TO est également spécifié, les politiques jusqu'à cette version sont également activées, mais sans nécessiter la présence de cette version particulière de Qtt.

Les politiques suivantes sont disponibles :

QTP0001

':/qt/qml/' est le préfixe de ressource par défaut pour les modules Qtml.

QTP0002

Les propriétés de cible qui spécifient des chemins spécifiques à Android peuvent contenir des expressions de générateur.

QTP0003

Tenez compte de la valeur BUILD_SHARED_LIBS lors de la création de bibliothèques Qt.

QTP0004

Les répertoires supplémentaires contenant des fichiers QML dans un module QML nécessitent des fichiers qmldir supplémentaires

QTP0005

Les mots-clés de dépendance Qt_add_qml_module acceptent les cibles CMake.

Voir qt_policy pour plus de détails sur la définition manuelle des politiques individuelles.

Sur les plateformes qui supportent RPATH (autres que les plateformes Apple), deux valeurs sont ajoutées à la variable CMAKE_INSTALL_RPATH par cette commande. $ORIGIN est ajouté afin que les bibliothèques trouvent d'autres bibliothèques dont elles dépendent dans le même répertoire qu'elles. $ORIGIN/<reldir> est également ajouté, où <reldir> est le chemin relatif de CMAKE_INSTALL_BINDIR à CMAKE_INSTALL_LIBDIR. Cela permet aux exécutables installés à CMAKE_INSTALL_BINDIR de trouver toutes les bibliothèques dont ils peuvent dépendre installées à CMAKE_INSTALL_LIBDIR. Tout doublon dans CMAKE_INSTALL_RPATH est supprimé. En pratique, ces deux valeurs garantissent que les exécutables et les bibliothèques trouveront leurs dépendances au moment de l'édition des liens, en supposant que les projets les installent aux emplacements par défaut que la commande install(TARGETS) utilise lorsqu'aucune destination n'est explicitement fournie.

Pour désactiver la prise en charge des dossiers pour les IDE, définissez USE_FOLDERS à OFF avant ou après l'appel à qt_standard_project_setup.

La commande qt_standard_project_setup() peut être désactivée en mettant la variable QT_NO_STANDARD_PROJECT_SETUP à true.

Internationalisation

Depuis Qt 6.7, il est possible de spécifier les langues qui sont utilisées pour l'internationalisation du projet avec l'argument I18N_TRANSLATED_LANGUAGES. Voir QT_I18N_TRANSLATED_LANGUAGES pour plus de détails.

Utilisez I18N_SOURCE_LANGUAGE pour spécifier la langue dans laquelle les chaînes traduisibles sont écrites. Par défaut, en est utilisé. Voir QT_I18N_SOURCE_LANGUAGE pour plus de détails.

Exemple

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})

Voir aussi qt_generate_deploy_app_script(), qt_policy, et 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.