Sur cette page

Création des fichiers de projet

Les fichiers de projet contiennent toutes les informations nécessaires à qmake pour construire votre application, votre bibliothèque ou votre plugin. En général, vous utilisez une série de déclarations pour spécifier les ressources du projet, mais la prise en charge de constructions de programmation simples vous permet de décrire différents processus de construction pour différentes plates-formes et différents environnements.

Éléments du fichier de projet

Le format de fichier de projet utilisé par qmake peut être utilisé pour prendre en charge des systèmes de compilation simples ou relativement complexes. Les fichiers de projet simples utilisent un style déclaratif direct, définissant des variables standard pour indiquer les fichiers source et les fichiers d'en-tête utilisés dans le projet. Les projets complexes peuvent utiliser des structures de flux de contrôle pour affiner le processus de construction.

Les sections suivantes décrivent les différents types d'éléments utilisés dans les fichiers de projet.

Variables

Dans un fichier de projet, les variables sont utilisées pour contenir des listes de chaînes de caractères. Dans les projets les plus simples, ces variables informent qmake des options de configuration à utiliser, ou fournissent des noms de fichiers et des chemins à utiliser dans le processus de compilation.

qmake recherche certaines variables dans chaque fichier de projet, et il utilise le contenu de ces variables pour déterminer ce qu'il doit écrire dans un Makefile. Par exemple, les listes de valeurs des variables HEADERS et SOURCES sont utilisées pour indiquer à qmake les fichiers d'en-tête et de source dans le même répertoire que le fichier de projet.

Les variables peuvent également être utilisées en interne pour stocker des listes temporaires de valeurs, et les listes de valeurs existantes peuvent être écrasées ou étendues avec de nouvelles valeurs.

L'extrait suivant illustre la manière dont les listes de valeurs sont affectées aux variables :

HEADERS = mainwindow.h paintwidget.h

La liste des valeurs d'une variable est étendue de la manière suivante :

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

Remarque : la première affectation n'inclut que les valeurs spécifiées sur la même ligne que la variable HEADERS. La deuxième affectation répartit les valeurs de la variable SOURCES sur plusieurs lignes en utilisant une barre oblique inverse (\).

La variable CONFIG est une autre variable spéciale que qmake utilise lors de la génération d'un Makefile. Elle est discutée dans Configuration générale. Dans l'extrait ci-dessus, console est ajouté à la liste des valeurs existantes contenues dans CONFIG.

Le tableau suivant énumère quelques variables fréquemment utilisées et décrit leur contenu. Pour une liste complète des variables et de leurs descriptions, voir Variables.

VariableContenu
CONFIGOptions de configuration générale du projet.
DESTDIRRépertoire dans lequel le fichier exécutable ou binaire sera placé.
FORMSUne liste de fichiers d'interface utilisateur à traiter par le compilateur d'interface utilisateur (uic).
ENTÊTESUne liste de noms de fichiers d'en-tête (.h) utilisés lors de la construction du projet.
QTListe des modules Qt utilisés dans le projet.
RESSOURCESListe des fichiers de ressources (.qrc) à inclure dans le projet final. Voir le système de ressources Qt pour plus d'informations sur ces fichiers.
SOURCESListe des fichiers de code source à utiliser lors de la construction du projet.
MODÈLELe modèle à utiliser pour le projet. Cela détermine si le résultat du processus de construction sera une application, une bibliothèque ou un plugin.

Le contenu d'une variable peut être lu en faisant précéder le nom de la variable de $$. Cela permet d'affecter le contenu d'une variable à une autre :

TEMP_SOURCES = $$SOURCES

L'opérateur $$ est largement utilisé avec les fonctions intégrées qui opèrent sur des chaînes et des listes de valeurs. Pour plus d'informations, voir qmake Language.

Espace blanc

En général, les espaces séparent les valeurs dans les affectations de variables. Pour spécifier des valeurs contenant des espaces, vous devez les placer entre guillemets doubles :

DEST = "Program Files"

Le texte entre guillemets est traité comme un seul élément dans la liste des valeurs détenues par la variable. Une approche similaire est utilisée pour traiter les chemins contenant des espaces, en particulier lors de la définition des variables INCLUDEPATH et LIBS pour la plate-forme Windows :

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

Commentaires

Vous pouvez ajouter des commentaires aux fichiers de projet. Les commentaires commencent par le caractère # et se poursuivent jusqu'à la fin de la même ligne. Par exemple, les commentaires commencent par le caractère et se poursuivent jusqu'à la fin de la même ligne :

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

Pour inclure le caractère # dans les affectations de variables, il est nécessaire d'utiliser le contenu de la variable LITERAL_HASH intégrée.

Fonctions intégrées et flux de contrôle

qmake fournit un certain nombre de fonctions intégrées pour permettre le traitement du contenu des variables. La fonction la plus couramment utilisée dans les fichiers de projets simples est la fonction include() qui prend un nom de fichier comme argument. Le contenu du fichier donné est inclus dans le fichier de projet à l'endroit où la fonction include est utilisée. La fonction include est le plus souvent utilisée pour inclure d'autres fichiers de projet :

include(other.pro)

La prise en charge des structures conditionnelles est assurée par des scopes qui se comportent comme les déclarations if dans les langages de programmation :

win32 {
    SOURCES += paintwidget_win.cpp
}

Les affectations à l'intérieur des accolades ne sont effectuées que si la condition est vraie. Dans ce cas, l'option win32 CONFIG doit être définie. Cela se fait automatiquement sous Windows. L'accolade ouvrante doit se trouver sur la même ligne que la condition.

Des opérations plus complexes sur les variables, qui nécessiteraient habituellement des boucles, sont fournies par des fonctions intégrées telles que find(), unique() et count(). Ces fonctions, et bien d'autres encore, permettent de manipuler des chaînes de caractères et des chemins d'accès, de prendre en charge les entrées de l'utilisateur et d'appeler des outils externes. Pour plus d'informations sur l'utilisation des fonctions, voir qmake Language. Pour obtenir la liste de toutes les fonctions et leur description, voir Fonctions de remplacement et Fonctions de test.

Modèles de projet

La variable TEMPLATE est utilisée pour définir le type de projet qui sera construit. Si elle n'est pas déclarée dans le fichier de projet, qmake suppose qu'une application doit être construite et génère un Makefile approprié (ou un fichier équivalent) à cet effet.

Le tableau suivant résume les types de projets disponibles et décrit les fichiers que qmake générera pour chacun d'entre eux :

ModèleSortie de qmake
app (par défaut)Makefile pour construire une application.
libMakefile pour construire une bibliothèque.
auxMakefile pour ne rien construire. Utilisez ceci si aucun compilateur ne doit être invoqué pour créer la cible, par exemple parce que votre projet est écrit dans un langage interprété.

Note : Ce type de modèle n'est disponible que pour les générateurs basés sur des Makefile. En particulier, il ne fonctionnera pas avec les générateurs vcxproj et Xcode.

sous-dossiersMakefile contenant des règles pour les sous-répertoires spécifiés à l'aide de la variable SUBDIRS. Chaque sous-répertoire doit contenir son propre fichier de projet.
vcappFichier de projet Visual Studio pour construire une application.
vclibFichier de projet Visual Studio permettant de créer une bibliothèque.
vcsubdirsFichier de solution Visual Studio permettant de créer des projets dans des sous-répertoires.

Voir Construire des types de projets communs pour obtenir des conseils sur l'écriture des fichiers de projet pour les projets qui utilisent les modèles app et lib.

Lorsque le modèle subdirs est utilisé, qmake génère un Makefile pour examiner chaque sous-répertoire spécifié, traiter tout fichier de projet qu'il y trouve et exécuter l'outil make de la plateforme sur le Makefile nouvellement créé. La variable SUBDIRS est utilisée pour contenir une liste de tous les sous-répertoires à traiter.

Configuration générale

La variable CONFIG spécifie les options et les fonctionnalités avec lesquelles le projet doit être configuré.

Le projet peut être construit en mode release ou en mode debug, ou les deux. Si les options debug et release sont toutes deux spécifiées, c'est la dernière qui prend effet. Si vous spécifiez l'option debug_and_release pour construire les versions debug et release d'un projet, le Makefile que qmake génère inclut une règle qui construit les deux versions. Cette règle peut être invoquée de la manière suivante :

make all

L'ajout de l'option build_all à la variable CONFIG fait de cette règle la règle par défaut lors de la construction du projet.

Remarque : Chacune des options spécifiées dans la variable CONFIG peut également être utilisée comme condition d'étendue. Vous pouvez tester la présence de certaines options de configuration en utilisant la fonction intégrée CONFIG(). Par exemple, les lignes suivantes montrent la fonction comme condition dans un champ d'application pour tester si seule l'option opengl est utilisée :

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

Cela permet de définir des configurations différentes pour les constructions release et debug. Pour plus d'informations, voir Utilisation des portées.

Les options suivantes définissent le type de projet à construire.

Remarque : certaines de ces options ne prennent effet que lorsqu'elles sont utilisées sur la plateforme concernée.

OptionDescription
qtLe projet est une application Qt et doit être lié à la bibliothèque Qt. Vous pouvez utiliser la variable QT pour contrôler tout module Qt supplémentaire requis par votre application. Cette valeur est ajoutée par défaut, mais vous pouvez la supprimer pour utiliser qmake pour un projet non Qt.
x11Le projet est une application ou une bibliothèque X11. Cette valeur n'est pas nécessaire si la cible utilise Qt.

Les modèles de projet d'application et de bibliothèque vous offrent des options de configuration plus spécialisées pour affiner le processus de construction. Ces options sont expliquées en détail dans la section Construire des types de projets communs.

Par exemple, si votre application utilise la bibliothèque Qt et que vous souhaitez la construire en mode debug, votre fichier de projet contiendra la ligne suivante :

CONFIG += qt debug

Remarque : vous devez utiliser "+=" et non "=", sinon qmake ne pourra pas utiliser la configuration de Qt pour déterminer les paramètres nécessaires à votre projet.

Déclarer les bibliothèques Qt

Si la variable CONFIG contient la valeur qt, le support de qmake pour les applications Qt est activé. Cela permet d'affiner les modules Qt utilisés par votre application. Ceci est possible grâce à la variable QT qui peut être utilisée pour déclarer les modules d'extension requis. Par exemple, nous pouvons activer les modules XML et réseau de la manière suivante :

QT += network xml

Note : QT inclut les modules core et gui par défaut, de sorte que la déclaration ci-dessus ajoute les modules réseau et XML à cette liste par défaut. L'affectation suivante omet les modules par défaut et entraînera des erreurs lors de la compilation du code source de l'application :

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

Si vous souhaitez construire un projet sans le module gui, vous devez l'exclure à l'aide de l'opérateur "-=". Par défaut, QT contient à la fois core et gui, de sorte que la ligne suivante aboutira à la construction d'un projet Qt minimal :

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

Pour une liste des modules Qt que vous pouvez ajouter à la variable QT, voir QT.

Fonctionnalités de configuration

qmake peut être configuré avec des fonctionnalités de configuration supplémentaires qui sont spécifiées dans des fichiers de fonctionnalités (.prf). Ces fonctionnalités supplémentaires fournissent souvent un support pour des outils personnalisés qui sont utilisés pendant le processus de construction. Pour ajouter une fonctionnalité au processus de construction, ajoutez le nom de la fonctionnalité (la racine du nom de fichier de la fonctionnalité) à la variable CONFIG.

Par exemple, qmake peut configurer le processus de compilation pour tirer parti des bibliothèques externes prises en charge par pkg-config, telles que les bibliothèques D-Bus et ogg, avec les lignes suivantes :

CONFIG += link_pkgconfig
PKGCONFIG += ogg dbus-1

Pour plus d'informations sur l'ajout de fonctionnalités, voir Ajout de nouvelles fonctionnalités de configuration.

Déclarer d'autres bibliothèques

Si vous utilisez d'autres bibliothèques dans votre projet en plus de celles fournies avec Qt, vous devez les spécifier dans votre fichier de projet.

Les chemins que qmake recherche pour les bibliothèques et les bibliothèques spécifiques à lier peuvent être ajoutés à la liste des valeurs de la variable LIBS. Vous pouvez spécifier les chemins d'accès aux bibliothèques ou utiliser la notation de style Unix pour spécifier les bibliothèques et les chemins d'accès.

Par exemple, les lignes suivantes montrent comment une bibliothèque peut être spécifiée :

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

Les chemins contenant les fichiers d'en-tête peuvent également être spécifiés de la même manière à l'aide de la variable INCLUDEPATH.

Par exemple, pour ajouter plusieurs chemins à rechercher pour les fichiers d'en-tête :

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.