Sur cette page

Fonctions de remplacement

qmake fournit des fonctions pour traiter le contenu des variables pendant le processus de configuration. Ces fonctions sont appelées fonctions de remplacement. En général, elles renvoient des valeurs que vous pouvez assigner à d'autres variables. Vous pouvez obtenir ces valeurs en préfixant une fonction avec l'opérateur $$. Les fonctions de remplacement peuvent être divisées en fonctions intégrées et en bibliothèques de fonctions.

Voir aussi Fonctions de test.

Fonctions de remplacement intégrées

Les fonctions de remplacement de base sont implémentées en tant que fonctions intégrées.

absolute_path(path[, base])

Renvoie le chemin absolu de path.

Si base n'est pas spécifié, le répertoire actuel est utilisé comme répertoire de base. S'il s'agit d'un chemin relatif, il est résolu par rapport au répertoire actuel avant d'être utilisé.

Par exemple, l'appel suivant renvoie la chaîne "/home/johndoe/myproject/readme.txt":

message($$absolute_path("readme.txt", "/home/johndoe/myproject"))

Cette fonction a été introduite dans Qt 5.0.

Voir aussi clean_path(), relative_path().

basename(variablename)

Renvoie le nom de base du fichier spécifié dans variablename.

Par exemple :

FILE = /etc/passwd
FILENAME = $$basename(FILE) #passwd

cat(nomfichier[, mode])

Renvoie le contenu de filename. Vous pouvez spécifier les options suivantes pour mode:

  • blob renvoie tout le contenu du fichier en une seule valeur
  • lines renvoie chaque ligne comme une valeur séparée (sans fin de ligne)
  • true (valeur par défaut) et false renvoient le contenu du fichier sous forme de valeurs séparées, découpées selon les règles de découpage de la liste de valeurs de qmake (comme dans les affectations de variables). Si mode est false, les valeurs qui ne contiennent qu'un caractère de fin de ligne sont insérées dans la liste pour indiquer où se trouvent les sauts de ligne dans le fichier.

clean_path(chemin)

Renvoie path avec les séparateurs de répertoire normalisés (convertis en "/") et les séparateurs redondants supprimés, ainsi que les ". "s et les ".. "s résolus (dans la mesure du possible). Cette fonction est une enveloppe autour de QDir::cleanPath.

Cette fonction a été introduite dans Qt 5.0.

Voir aussi absolute_path(), relative_path(), shell_path(), system_path().

dirname(fichier)

Renvoie la partie du nom de répertoire du fichier spécifié. Par exemple :

FILE = /etc/X11R6/XF86Config
DIRNAME = $$dirname(FILE) #/etc/X11R6

enumerate_vars

Renvoie une liste de tous les noms de variables définis.

Cette fonction a été introduite dans Qt 5.0.

escape_expand(arg1 [, arg2 ..., argn])

Accepte un nombre arbitraire d'arguments. Elle développe les séquences d'échappement \n, \r, \t pour chaque argument et renvoie les arguments sous forme de liste.

Remarque : si vous spécifiez la chaîne à développer littéralement, vous devez échapper les barres obliques inverses, comme l'illustre l'extrait de code suivant :

message("First line$$escape_expand(\\n)Second line")

find(variablename, substr)

Renvoie toutes les valeurs de variablename qui correspondent à l'expression régulière substr.

MY_VAR = one two three four
MY_VAR2 = $$join(MY_VAR, " -L", -L) -Lfive
MY_VAR3 = $$member(MY_VAR, 2) $$find(MY_VAR, t.*)

MY_VAR2 contiendra '-Lone -Ltwo -Lthree -Lfour -Lfive', et MY_VAR3 contiendra 'three two three'.

files(pattern[, recursive=false])

Développe le motif joker spécifié et renvoie une liste de noms de fichiers. Si recursive est vrai, cette fonction descend dans les sous-répertoires.

first(nomvariable)

Renvoie la première valeur de variablename.

Par exemple, l'appel suivant renvoie firstname:

CONTACT = firstname middlename surname phone
message($$first(CONTACT))

Voir aussi take_first(), last().

format_number(nombre[, options...])

Renvoie number dans le format spécifié par options. Vous pouvez spécifier les options suivantes :

  • ibase=n définit la base de l'entrée à n
  • obase=n fixe la base de la sortie à n
  • width=n fixe la largeur minimale de la sortie à n. Si la sortie est plus courte que width, elle est remplie d'espaces.
  • zeropad remplit la sortie avec des zéros au lieu d'espaces
  • padsign ajoute un espace aux valeurs positives de la sortie
  • alwayssign ajoute un signe plus aux valeurs positives de la sortie
  • leftalign place le remplissage à droite de la valeur dans la sortie.

Les nombres à virgule flottante ne sont actuellement pas pris en charge.

Par exemple, l'appel suivant convertit le nombre hexadécimal BAD en 002989:

message($$format_number(BAD, ibase=16 width=6 zeropad))

Cette fonction a été introduite dans Qt 5.0.

fromfile(filename, variablename)

Évalue filename en tant que fichier de projet qmake et renvoie la valeur attribuée à variablename.

Voir aussi infile().

getenv(nomvariable)

Renvoie la valeur de la variable d'environnement variablename. Cette fonction est en grande partie équivalente à la syntaxe de $$(variablename). La fonction getenv, cependant, supporte les variables d'environnement avec des parenthèses dans leur nom.

Cette fonction a été introduite dans Qt 5.12.

join(variablename, glue, before, after)

Joint la valeur de variablename avec glue. Si cette valeur n'est pas vide, cette fonction la préfixe avec before et la suffixe avec after. variablename est le seul champ obligatoire, les autres sont des chaînes vides par défaut. Si vous devez encoder des espaces dans glue, before, ou after, vous devez les mettre entre guillemets.

last(nom de la variable)

Renvoie la dernière valeur de variablename.

Par exemple, l'appel suivant renvoie phone:

CONTACT = firstname middlename surname phone
message($$last(CONTACT))

Voir aussi take_last(), first().

list(arg1 [, arg2 ..., argn])

Prend un nombre arbitraire d'arguments. Elle crée une variable nommée de façon unique qui contient une liste d'arguments, et renvoie le nom de cette variable. Vous pouvez utiliser la variable pour écrire une boucle, comme l'illustre l'extrait de code suivant

for(var, $$list(foo bar baz)) {
    ...
}

au lieu de :

values = foo bar baz
for(var, values) {
    ...
}

lower(arg1 [, arg2 ..., argn])

Prend un nombre arbitraire d'arguments et les convertit en minuscules.

Voir aussi upper().

member(nomvariable [, début [, fin]])

Renvoie la tranche de la valeur de liste de variablename avec les indices d'éléments basés sur zéro entre start et end (inclus).

Si start n'est pas fourni, la valeur par défaut est zéro. Cette utilisation est équivalente à $$first(variablename).

Si end n'est pas indiqué, la valeur par défaut est start. Cette utilisation correspond à une indexation de tableau simple, car un seul élément sera renvoyé.

Il est également possible de spécifier start et end dans un seul argument, les nombres étant séparés par deux points.

Les nombres négatifs représentent des indices commençant à la fin de la liste, -1 étant le dernier élément.

Si l'un des indices est hors de portée, une liste vide est renvoyée.

Si end est plus petit que start, les éléments sont retournés dans l'ordre inverse.

Remarque : le fait que l'indice de fin soit inclusif et non ordonné implique qu'une liste vide ne sera renvoyée que si l'indice est invalide (ce qui implique que la variable d'entrée soit vide).

Voir aussi str_member().

num_add(arg1 [, arg2 ..., argn])

Prend un nombre arbitraire d'arguments numériques et les additionne, en retournant la somme.

La soustraction est implicitement supportée grâce à la possibilité de simplement ajouter un signe moins à une valeur numérique pour l'annuler :

sum = $$num_add($$first, -$$second)

Si l'opérande est déjà négatif, une autre étape est nécessaire pour normaliser le nombre :

second_neg = -$$second
second_neg ~= s/^--//
sum = $$num_add($$first, $$second_neg)

Cette fonction a été introduite dans Qt 5.8.

prompt(question [, decorate])

Affiche la question spécifiée question, et renvoie une valeur lue depuis stdin.

Si decorate est vrai (par défaut), la question reçoit un préfixe et un suffixe génériques qui l'identifient comme une invite.

quote(chaîne)

Convertit une chaîne string en une seule entité et renvoie le résultat. Il s'agit d'une façon élégante de mettre la chaîne entre guillemets.

re_escape(chaîne)

Renvoie l'adresse string avec tous les caractères spéciaux d'expression régulière échappés par une barre oblique inverse. Cette fonction est une enveloppe autour de QRegularExpression::escape.

read_registry(tree, key[, flag])

Renvoie la valeur de la clé de registre key dans l'arbre tree.

Seuls les arbres HKEY_CURRENT_USER (HKCU) et HKEY_LOCAL_MACHINE (HKLM) sont pris en charge.

L'adresse flag peut être WOW64_32KEY (32) ou WOW64_64KEY (64).

Remarque : cette fonction n'est disponible que sur les hôtes Windows.

Cette fonction a été introduite dans Qt 5.12.1.

relative_path(filePath[, base])

Renvoie le chemin d'accès à filePath par rapport à base.

Si base n'est pas spécifié, il s'agit du répertoire actuel du projet. S'il est relatif, il est résolu par rapport au répertoire du projet en cours avant d'être utilisé.

Si filePath est relatif, il est d'abord résolu par rapport au répertoire de base ; dans ce cas, cette fonction agit effectivement comme $$clean_path().

Cette fonction a été introduite dans Qt 5.0.

Voir aussi absolute_path(), clean_path().

replace(string, old_string, new_string)

Remplace chaque instance de old_string par new_string dans le contenu de la variable fournie par string. Par exemple, le code

MESSAGE = This is a tent.
message($$replace(MESSAGE, tent, test))

imprime le message :

This is a test.

resolve_depends(variablename, prefix)

Il s'agit d'une fonction interne dont vous n'aurez généralement pas besoin.

Cette fonction a été introduite dans Qt 5.0.

reverse(nom_de_variable)

Renvoie les valeurs de variablename dans l'ordre inverse.

Cette fonction a été introduite dans Qt 5.0.

section(variablename, separator, begin, end)

Renvoie une section de la valeur de variablename. Cette fonction est une enveloppe autour de QString::section.

Par exemple, l'appel suivant produit surname:

CONTACT = firstname:middlename:surname:phone
message($$section(CONTACT, :, 2, 2))

shadowed(chemin)

Met en correspondance le chemin d'accès du répertoire source du projet avec le répertoire de construction. Cette fonction renvoie path pour les constructions in-source. Elle renvoie une chaîne vide si path pointe en dehors de l'arbre des sources.

Cette fonction a été introduite dans Qt 5.0.

shell_path(path)

Convertit tous les séparateurs de répertoires dans path en séparateurs compatibles avec le shell utilisé lors de la construction du projet (c'est-à-dire le shell invoqué par l'outil make). Par exemple, les barres obliques sont converties en barres obliques inverses lorsque l'interpréteur de commandes Windows est utilisé.

Cette fonction a été introduite dans Qt 5.0.

Voir aussi system_path().

shell_quote(arg)

Met en guillemets arg pour l'interpréteur de commandes utilisé lors de la construction du projet.

Cette fonction a été introduite dans Qt 5.0.

Voir aussi system_quote().

size(nom de la variable)

Renvoie le nombre de valeurs de variablename.

Voir aussi str_size().

sort_depends(nom_de_variable, préfixe)

Il s'agit d'une fonction interne dont vous n'aurez généralement pas besoin.

Cette fonction a été introduite dans Qt 5.0.

sorted(nom_de_la_variable)

Renvoie la liste des valeurs dans variablename avec les entrées triées dans l'ordre ASCII croissant.

Le tri numérique peut être réalisé en plaçant les valeurs à une longueur fixe avec l'aide de la fonction format_number().

Cette fonction a été introduite dans Qt 5.8.

split(variablename, separator)

Divise la valeur de variablename en plusieurs valeurs et les renvoie sous forme de liste. Cette fonction est une enveloppe autour de QString::split.

Par exemple :

CONTACT = firstname:middlename:surname:phone
message($$split(CONTACT, :))

sprintf(chaîne, arguments...)

Remplace %1-%9 dans string par les arguments passés dans la liste séparée par des virgules de la fonction arguments et renvoie la chaîne traitée.

str_member(arg [, start [, end]])

Cette fonction est identique à member(), sauf qu'elle opère sur une valeur de chaîne de caractères au lieu d'une variable de liste et que, par conséquent, les indices se réfèrent à des positions de caractères.

Cette fonction peut être utilisée pour mettre en œuvre de nombreuses opérations courantes de découpage de chaînes de caractères :

# $$left(VAR, len)
left = $$str_member(VAR, 0, $$num_add($$len, -1))

# $$right(VAR, len)
right = $$str_member(VAR, -$$num, -1)

# $$mid(VAR, off, len)
mid = $$str_member(VAR, $$off, $$num_add($$off, $$len, -1))

# $$mid(VAR, off)
mid = $$str_member(VAR, $$off, -1)

# $$reverse(VAR)
reverse = $$str_member(VAR, -1, 0)

Note : Dans ces implémentations, un argument zéro len doit être traité séparément.

Voir aussi member(), num_add().

Cette fonction a été introduite dans Qt 5.8.

str_size(arg)

Renvoie le nombre de caractères de l'argument.

Voir aussi size().

Cette fonction a été introduite dans Qt 5.8.

system(command[, mode[, stsvar]])

Vous pouvez utiliser cette variante de la fonction system pour obtenir stdout à partir de la commande et l'affecter à une variable.

Par exemple :

UNAME = $$system(uname -s)
contains( UNAME, [lL]inux ):message( This looks like Linux ($$UNAME) to me )

Comme $$cat(), l'argument mode prend blob, lines, true, et false comme valeur. Cependant, les règles de séparation des mots (c'est-à-dire vide ou true, et false) diffèrent légèrement.

Si vous passez stsvar, l'état de sortie de la commande sera stocké dans cette variable. Si la commande s'arrête, le statut sera -1, sinon un code de sortie non négatif choisi par la commande. En général, il suffit de comparer l'état à zéro (succès).

Voir aussi la variante test de system().

system_path(chemin)

Convertit tous les séparateurs de répertoires dans path en séparateurs compatibles avec le shell utilisé par les fonctions system() pour invoquer les commandes. Par exemple, les barres obliques sont converties en barres obliques inverses pour l'interpréteur de commandes Windows.

Cette fonction a été introduite dans Qt 5.0.

Voir aussi shell_path().

system_quote(arg)

Met entre guillemets arg pour l'interpréteur de commandes utilisé par les fonctions system().

Cette fonction a été introduite dans Qt 5.0.

Voir aussi shell_quote().

take_first(nom_de_la_variable)

Renvoie la première valeur de variablename et la supprime de la variable source.

Cette fonction est pratique pour mettre en place des files d'attente, par exemple.

Cette fonction a été introduite dans Qt 5.8.

Voir aussi take_last(), first().

take_last(nom_de_la_variable)

Renvoie la dernière valeur de variablename et la supprime de la variable source.

Ceci est pratique pour implémenter des piles, par exemple.

Cette fonction a été introduite dans Qt 5.8.

Voir aussi take_first(), last().

unique(nomdevariable)

Renvoie la liste des valeurs dans variablename en supprimant les doublons. Par exemple :

ARGS = 1 2 3 2 5 1
ARGS = $$unique(ARGS) #1 2 3 5

upper(arg1 [, arg2 ..., argn])

Prend un nombre arbitraire d'arguments et les convertit en majuscules.

Voir aussi lower().

val_escape(nom_de_variable)

Échappe les valeurs de variablename d'une manière qui permet de les analyser comme du code qmake.

Cette fonction a été introduite dans Qt 5.0.

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