Fonctions de remplacement
qmake fournit des fonctions permettant de traiter le contenu des variables au cours du processus de configuration. Ces fonctions sont appelées « fonctions de remplacement ». En général, elles renvoient des valeurs que vous pouvez attribuer à d’autres variables. Vous pouvez obtenir ces valeurs en faisant précéder une fonction de l’opérateur « $$ ». Les fonctions de remplacement peuvent être classées en deux catégories : les fonctions intégrées et les bibliothèques de fonctions.
Voir également 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é, utilise le répertoire courant comme répertoire de base. S'il s'agit d'un chemin relatif, il est résolu par rapport au répertoire courant avant utilisation.
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(nom_variable)
Renvoie le nom de base du fichier spécifié dans variablename.
Par exemple :
FILE = /etc/passwd
FILENAME = $$basename(FILE) #passwdcat(filename[, mode])
Renvoie le contenu de filename. Vous pouvez spécifier les options suivantes pour mode:
blobrenvoie l'intégralité du contenu du fichier sous la forme d'une seule valeurlinesrenvoie chaque ligne sous forme de valeur distincte (sans fins de ligne)true(valeur par défaut) etfalserenvoient le contenu du fichier sous forme de valeurs distinctes, séparées selon les règles de découpage des listes de valeurs de qmake (comme dans les affectations de variables). Simodeestfalse, des valeurs ne contenant qu’un caractère de nouvelle ligne sont insérées dans la liste pour indiquer l’emplacement des sauts de ligne dans le fichier.
clean_path(path)
Renvoie path avec les séparateurs de répertoires normalisés (convertis en « / ») et les séparateurs redondants supprimés, et les « . » et « .. » résolus (dans la mesure du possible). Cette fonction est un wrapper 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 « nom de répertoire » du fichier spécifié. Par exemple :
FILE = /etc/X11R6/XF86Config
DIRNAME = $$dirname(FILE) #/etc/X11R6enumerate_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 littéralement la chaîne à développer, vous devez échapper les barres obliques inversées, comme l’illustre l’extrait de code suivant :
message("First line$$escape_expand(\\n)Second line")find(nom_variable, 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 générique spécifié et renvoie une liste de noms de fichiers. Si recursive est vrai, cette fonction explore les sous-répertoires.
first(nom_de_variable)
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(number[, options...])
Renvoie number au format spécifié par options. Vous pouvez spécifier les options suivantes :
ibase=ndéfinit la base de l'entrée surnobase=ndéfinit la base de la sortie surnwidth=ndéfinit la largeur minimale de la sortie àn. Si la sortie est plus courte quewidth, elle est complétée par des espaceszeropadremplit la sortie avec des zéros au lieu d’espacespadsignajoute un espace devant les valeurs positives de la sortiealwayssignajoute un signe plus devant les valeurs positives de la sortieleftalignplace 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(nom_variable)
Renvoie la valeur de la variable d'environnement variablename. Cela équivaut globalement à la syntaxe $$(variablename). La fonction getenv prend toutefois en charge les variables d'environnement dont le nom contient des parenthèses.
Cette fonction a été introduite dans Qt 5.12.
join(nom_variable, chaîne_de_liaison, avant, après)
Conjoint la valeur de ` variablename ` avec ` glue`. Si cette valeur n’est pas vide, cette fonction ajoute le préfixe ` before ` et le suffixe ` after` à la valeur. ` variablename ` est le seul champ obligatoire ; les autres prennent par défaut la valeur d’une chaîne vide. Si vous devez encoder des espaces dans ` glue`, ` before` ou ` after`, vous devez les mettre entre guillemets.
last(nom_de_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 au nom unique contenant une liste des arguments, et renvoie le nom de cette variable. Vous pouvez utiliser cette 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(nom_variable [, début [, fin]])
Renvoie la tranche de la liste variablename dont les indices d'éléments, comptés à partir de zéro, sont compris 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 spécifié, la valeur par défaut est start. Cette utilisation correspond à un simple indexage de tableau, puisqu’un seul élément sera renvoyé.
Il est également possible de spécifier le début et la fin dans un seul argument, les nombres étant séparés par deux points.
Les nombres négatifs représentent des indices commençant à partir de la fin de la liste, -1 correspondant au dernier élément.
Si l’un des deux indices est hors de la plage autorisée, une liste vide est renvoyée.
Si « end » est inférieur à « start », les éléments sont renvoyé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 lorsqu’un indice est invalide (ce qui est sous-entendu par le fait que la variable d’entrée soit vide).
Voir également str_member().
num_add(arg1 [, arg2 ..., argn])
Prend un nombre arbitraire d’arguments numériques et les additionne, en renvoyant la somme.
La soustraction est implicitement prise en charge grâce à la possibilité de simplement préfixer une valeur numérique d’un signe moins pour la négativer :
sum = $$num_add($$first, -$$second)Si l’opérande est déjà négatif, une étape supplémentaire 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 l'question spécifiée et renvoie une valeur lue à partir de stdin.
Si ` decorate ` est vrai (par défaut), la question est précédée d’un préfixe et suivie d’un suffixe génériques l’identifiant comme une invite.
quote(chaîne)
Convertit une chaîne « string » entière en une seule entité et renvoie le résultat. Il s'agit simplement d'une manière sophistiquée de placer la chaîne entre guillemets doubles.
re_escape(chaîne)
Renvoie l’ string en échappant chaque caractère spécial d’expression régulière à l’aide d’une barre oblique inversée. Cette fonction est un wrapper autour de ` QRegularExpression::escape`.
read_registry(tree, key[, flag])
Renvoie la valeur de la clé de registre key située dans l’arborescence tree.
Seules les arborescences HKEY_CURRENT_USER (HKCU) et HKEY_LOCAL_MACHINE (HKLM) sont prises en charge.
L'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 du projet en cours. S’il est relatif, il est résolu par rapport au répertoire du projet en cours avant utilisation.
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 occurrence de ` old_string ` par ` new_string ` dans le contenu de la variable fournie en tant que ` string`. Par exemple, le code
MESSAGE = This is a tent.
message($$replace(MESSAGE, tent, test))affiche le message :
This is a test.resolve_depends(nom_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.
reverse(variablename)
Renvoie les valeurs de ` variablename ` dans l'ordre inverse.
Cette fonction a été introduite dans Qt 5.0.
section(nom_de_variable, séparateur, début, fin)
Renvoie une partie de la valeur de ` variablename`. Cette fonction est un wrapper autour de ` QString::section`.
Par exemple, l'appel suivant affiche surname:
CONTACT = firstname:middlename:surname:phone
message($$section(CONTACT, :, 2, 2))shadowed(path)
Mappe le chemin d’accès du répertoire source du projet vers le répertoire de compilation. Cette fonction renvoie path pour les compilations dans le répertoire source. Elle renvoie une chaîne vide si path pointe en dehors de l’arborescence des sources.
Cette fonction a été introduite dans Qt 5.0.
shell_path(path)
Convertit tous les séparateurs de répertoires présents dans path en séparateurs compatibles avec le shell utilisé lors de la compilation du projet (c’est-à-dire le shell invoqué par l’outil make). Par exemple, les barres obliques sont converties en barres obliques inversées lorsque le shell Windows est utilisé.
Cette fonction a été introduite dans Qt 5.0.
Voir aussi system_path().
shell_quote(arg)
Place le chemin d'accès arg entre guillemets pour le shell utilisé lors de la compilation du projet.
Cette fonction a été introduite dans Qt 5.0.
Voir aussi system_quote().
size(nom_variable)
Renvoie le nombre de valeurs de ` variablename`.
Voir aussi str_size().
sort_depends(nom_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_variable)
Renvoie la liste des valeurs d'variablename, dont les entrées sont triées par ordre ASCII croissant.
Le tri numérique peut être effectué en complétant les valeurs par des zéros jusqu'à une longueur fixe à l'aide de la fonction format_number().
Cette fonction a été introduite dans Qt 5.8.
split(nom_de_variable, séparateur)
Divise la valeur de ` variablename ` en valeurs distinctes et les renvoie sous forme de liste. Cette fonction est un wrapper autour de ` QString::split`.
Par exemple :
CONTACT = firstname:middlename:surname:phone
message($$split(CONTACT, :))sprintf(chaîne, arguments...)
Remplace les éléments %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(), à l’exception qu’elle opère sur une valeur de chaîne de caractères plutôt que sur une variable de liste, et que, par conséquent, les indices font référence à des positions de caractères.
Cette fonction peut être utilisée pour implémenter de nombreuses opérations courantes de découpage de chaînes :
# $$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)Remarque : 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 contenus dans l'argument.
Voir aussi size().
Cette fonction a été introduite dans Qt 5.8.
system(commande[, mode[, stsvar]])
Vous pouvez utiliser cette variante de la fonction ` system ` pour récupérer la sortie standard (`stdout`) 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 )Tout comme $$cat(), l'argument de la fonction mode accepte les valeurs suivantes : blob, lines, true et false. Cependant, les règles de segmentation des mots héritées (c'est-à-dire vide ou true et false) diffèrent légèrement.
Si vous passez stsvar, le statut de sortie de la commande sera stocké dans cette variable. Si la commande plante, le statut sera -1, sinon un code de sortie non négatif choisi par la commande. En général, il suffit de comparer le statut à zéro (succès).
Voir également la variante test de la fonction system().
system_path(path)
Convertit tous les séparateurs de répertoires présents dans ` path ` en séparateurs compatibles avec le shell utilisé par les fonctions ` system() ` pour invoquer des commandes. Par exemple, les barres obliques sont converties en barres obliques inversées pour le shell Windows.
Cette fonction a été introduite dans Qt 5.0.
Voir également shell_path().
system_quote(arg)
Place arg entre guillemets pour le shell utilisé par les fonctions de l'system().
Cette fonction a été introduite dans Qt 5.0.
Voir aussi shell_quote().
take_first(variablename)
Renvoie la première valeur d'variablename et la supprime de la variable source.
Cela facilite notamment la mise en œuvre de files d'attente, par exemple.
Cette fonction a été introduite dans Qt 5.8.
Voir aussi take_last(), first().
take_last(nom_variable)
Renvoie la dernière valeur de ` variablename ` et la supprime de la variable source.
Cela facilite notamment la mise en œuvre de piles.
Cette fonction a été introduite dans Qt 5.8.
Voir également take_first(), last().
unique(nom_variable)
Renvoie la liste des valeurs contenues dans ` variablename `, après suppression des entrées en double. Par exemple :
ARGS = 1 2 3 2 5 1
ARGS = $$unique(ARGS) #1 2 3 5upper(arg1 [, arg2 ..., argn])
Prend un nombre arbitraire d'arguments et les convertit en majuscules.
Voir aussi lower().
val_escape(nom_variable)
Échappe les valeurs de ` variablename ` de manière à permettre leur analyse en tant que 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.