Ersetzungsfunktionen
qmake stellt Funktionen zur Verfügung, mit denen der Inhalt von Variablen während des Konfigurationsprozesses verarbeitet werden kann. Diese Funktionen werden als Ersetzungsfunktionen bezeichnet. In der Regel geben sie Werte zurück, die Sie anderen Variablen zuweisen können. Sie können diese Werte abrufen, indem Sie einer Funktion den Operator „ $$ “ voranstellen. Ersetzungsfunktionen lassen sich in integrierte Funktionen und Funktionsbibliotheken unterteilen.
Siehe auch Testfunktionen.
Integrierte Ersetzungsfunktionen
Grundlegende Ersetzungsfunktionen sind als integrierte Funktionen implementiert.
absolute_path(path[, base])
Gibt den absoluten Pfad von ` path` zurück.
Wenn base nicht angegeben ist, wird das aktuelle Verzeichnis als Basisverzeichnis verwendet. Handelt es sich um einen relativen Pfad, wird dieser vor der Verwendung relativ zum aktuellen Verzeichnis aufgelöst.
Beispielsweise gibt der folgende Aufruf die Zeichenkette „ "/home/johndoe/myproject/readme.txt" “ zurück:
message($$absolute_path("readme.txt", "/home/johndoe/myproject"))Diese Funktion wurde in Qt 5.0 eingeführt.
Siehe auch clean_path(), relative_path().
basename(variablename)
Gibt den Basisnamen der in ` variablename` angegebenen Datei zurück.
Beispiel:
FILE = /etc/passwd
FILENAME = $$basename(FILE) #passwdcat(filename[, mode])
Gibt den Inhalt von ` filename` zurück. Für ` mode` können Sie folgende Optionen angeben:
blobgibt den gesamten Inhalt der Datei als einen Wert zurücklinesgibt jede Zeile als separaten Wert zurück (ohne Zeilenenden)true(Standardwert) und „false“ geben den Dateiinhalt als separate Werte zurück, aufgeteilt gemäß den Regeln zur Aufteilung von Wertelisten in qmake (wie bei Variablenzuweisungen). Wenn „mode“ auf „false“ gesetzt ist, werden Werte, die nur ein Zeilenumbruchzeichen enthalten, in die Liste eingefügt, um anzuzeigen, wo sich in der Datei Zeilenumbrüche befanden.
clean_path(path)
Gibt ` path ` zurück, wobei Verzeichnistrennzeichen normalisiert (in „/“ umgewandelt) und überflüssige entfernt sowie „.“ und „..“ (soweit möglich) aufgelöst werden. Diese Funktion ist ein Wrapper um ` QDir::cleanPath`.
Diese Funktion wurde in Qt 5.0 eingeführt.
Siehe auch absolute_path(), relative_path(), shell_path(), system_path().
dirname(file)
Gibt den Verzeichnisnamen der angegebenen Datei zurück. Beispiel:
FILE = /etc/X11R6/XF86Config
DIRNAME = $$dirname(FILE) #/etc/X11R6enumerate_vars
Gibt eine Liste aller definierten Variablennamen zurück.
Diese Funktion wurde in Qt 5.0 eingeführt.
escape_expand(arg1 [, arg2 ..., argn])
Akzeptiert eine beliebige Anzahl von Argumenten. Sie erweitert die Escape-Sequenzen „ \n “, „ \r “ und „ \t “ für jedes Argument und gibt die Argumente als Liste zurück.
Hinweis: Wenn Sie die zu expandierende Zeichenkette wörtlich angeben, müssen Sie die Backslashes escapen, wie im folgenden Codeausschnitt veranschaulicht:
message("First line$$escape_expand(\\n)Second line")find(variablename, substr)
Gibt alle Werte in ` variablename ` zurück, die dem regulären Ausdruck ` substr` entsprechen.
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 enthält „-Lone -Ltwo -Lthree -Lfour -Lfive“ und MY_VAR3 enthält „three two three“.
files(pattern[, recursive=false])
Erweitert das angegebene Platzhaltermuster und gibt eine Liste von Dateinamen zurück. Wenn „ recursive “ auf „true“ gesetzt ist, durchsucht diese Funktion auch Unterverzeichnisse.
first(Variablenname)
Gibt den ersten Wert von ` variablename` zurück.
Beispielsweise gibt der folgende Aufruf ` firstname` zurück:
CONTACT = firstname middlename surname phone
message($$first(CONTACT))Siehe auch take_first(), last().
format_number(number[, options...])
Gibt „ number “ in dem durch „ options “ angegebenen Format zurück. Sie können die folgenden Optionen angeben:
ibase=nLegt die Basis der Eingabe aufnobase=nlegt die Basis der Ausgabe fest aufnwidth=nlegt die Mindestbreite der Ausgabe auf `n` fest. Ist die Ausgabe kürzer als `width`, wird sie mit Leerzeichen aufgefülltzeropadfüllt die Ausgabe mit Nullen statt mit Leerzeichen aufpadsignfügt positiven Werten in der Ausgabe ein Leerzeichen voranalwayssignfügt positiven Werten in der Ausgabe ein Pluszeichen voranleftalignplatziert die Auffüllung in der Ausgabe rechts neben dem Wert
Gleitkommazahlen werden derzeit nicht unterstützt.
Der folgende Aufruf konvertiert beispielsweise die Hexadezimalzahl „ BAD “ in „ 002989 “:
message($$format_number(BAD, ibase=16 width=6 zeropad))Diese Funktion wurde in Qt 5.0 eingeführt.
fromfile(Dateiname, Variablenname)
Wertet filename als qmake-Projektdatei aus und gibt den Wert zurück, der variablename zugewiesen wurde.
Siehe auch infile().
getenv(variablename)
Gibt den Wert der Umgebungsvariablen „ variablename “ zurück. Dies entspricht im Wesentlichen der Syntax „ $$(variablename) “. Die Funktion „ getenv “ unterstützt jedoch Umgebungsvariablen, deren Name Klammern enthält.
Diese Funktion wurde in Qt 5.12 eingeführt.
join(variablename, glue, before, after)
Fügt den Wert von ` variablename ` mit ` glue` zusammen. Ist dieser Wert nicht leer, fügt die Funktion dem Wert „ before “ als Präfix und „ after “ als Suffix hinzu. ` variablename ` ist das einzige erforderliche Feld; die anderen werden standardmäßig mit leeren Zeichenketten belegt. Wenn Sie Leerzeichen in ` glue`, ` before` oder ` after` kodieren müssen, müssen Sie diese in Anführungszeichen setzen.
last(Variablenname)
Gibt den letzten Wert von variablename zurück.
Beispielsweise gibt der folgende Aufruf „ phone “ zurück:
CONTACT = firstname middlename surname phone
message($$last(CONTACT))Siehe auch take_last(), first().
list(arg1 [, arg2 ..., argn])
Nimmt eine beliebige Anzahl von Argumenten entgegen. Es erstellt eine Variablen mit einem eindeutigen Namen, die eine Liste der Argumente enthält, und gibt den Namen dieser Variablen zurück. Sie können die Variable verwenden, um eine Schleife zu schreiben, wie im folgenden Codeausschnitt veranschaulicht
for(var, $$list(foo bar baz)) {
...
}anstelle von:
values = foo bar baz
for(var, values) {
...
}lower(arg1 [, arg2 ..., argn])
Nimmt eine beliebige Anzahl von Argumenten entgegen und wandelt diese in Kleinbuchstaben um.
Siehe auch upper().
member(Variablenname [, start [, end]])
Gibt den Ausschnitt des Listenwerts von variablename mit den nullbasierten Elementindizes zwischen start und end (einschließlich) zurück.
Wird start nicht angegeben, ist der Standardwert Null. Diese Verwendung entspricht $$first(variablename).
Wird „ end “ nicht angegeben, ist der Standardwert „ start “. Diese Verwendung entspricht einer einfachen Array-Indizierung, da genau ein Element zurückgegeben wird.
Es ist auch möglich, Start und Ende in einem einzigen Argument anzugeben, wobei die Zahlen durch zwei Punkte getrennt werden.
Negative Zahlen stehen für Indizes, die vom Ende der Liste ausgehen, wobei -1 das letzte Element ist.
Liegt einer der Indizes außerhalb des zulässigen Bereichs, wird eine leere Liste zurückgegeben.
Ist end kleiner als start, werden die Elemente in umgekehrter Reihenfolge zurückgegeben.
Hinweis: Da der Endindex inklusive und ungeordnet ist, wird eine leere Liste nur dann zurückgegeben, wenn ein Index ungültig ist (was durch die Leere der Eingabevariablen impliziert wird).
Siehe auch str_member().
num_add(arg1 [, arg2 ..., argn])
Nimmt eine beliebige Anzahl numerischer Argumente entgegen, addiert diese und gibt die Summe zurück.
Die Subtraktion wird implizit unterstützt, da ein numerischer Wert durch einfaches Voranstellen eines Minuszeichens negiert werden kann:
sum = $$num_add($$first, -$$second)Falls der Operand bereits negativ sein könnte, ist ein weiterer Schritt zur Normalisierung der Zahl erforderlich:
second_neg = -$$second
second_neg ~= s/^--//
sum = $$num_add($$first, $$second_neg)Diese Funktion wurde in Qt 5.8 eingeführt.
prompt(question [, decorate])
Zeigt die angegebene Abfrage „ question “ an und gibt einen Wert zurück, der aus stdin gelesen wurde.
Ist ` decorate ` wahr (Standard), erhält die Frage ein generisches Präfix und Suffix, das sie als Eingabeaufforderung kennzeichnet.
quote(string)
Konvertiert eine gesamte Zeichenkette ( string ) in eine einzige Einheit und gibt das Ergebnis zurück. Dies ist lediglich eine elegantere Art, die Zeichenkette in doppelte Anführungszeichen zu setzen.
re_escape(string)
Gibt die „ string “ zurück, wobei jedes Sonderzeichen für reguläre Ausdrücke mit einem Backslash maskiert wurde. Diese Funktion ist ein Wrapper um „ QRegularExpression::escape “.
read_registry(tree, key[, flag])
Gibt den Wert des Registrierungsschlüssels key innerhalb des Baums tree zurück.
Es werden nur die Baumstrukturen „ HKEY_CURRENT_USER “ (HKCU) und „ HKEY_LOCAL_MACHINE “ (HKLM) unterstützt.
flag kann entweder WOW64_32KEY (32) oder WOW64_64KEY (64) sein.
Hinweis: Diese Funktion ist nur auf Windows-Hosts verfügbar.
Diese Funktion wurde in Qt 5.12.1 eingeführt.
relative_path(filePath[, base])
Gibt den Pfad zu „ filePath “ relativ zu „ base “ zurück.
Wenn base nicht angegeben ist, ist es das aktuelle Projektverzeichnis. Wenn es relativ ist, wird es vor der Verwendung relativ zum aktuellen Projektverzeichnis aufgelöst.
Ist ` filePath ` relativ, wird er zunächst anhand des Basisverzeichnisses aufgelöst; in diesem Fall verhält sich diese Funktion effektiv wie `$$clean_path()`.
Diese Funktion wurde in Qt 5.0 eingeführt.
Siehe auch absolute_path(), clean_path().
replace(string, old_string, new_string)
Ersetzt jede Instanz von ` old_string ` durch ` new_string ` im Inhalt der als ` string` übergebenen Variablen. Beispielsweise gibt der folgende Code
MESSAGE = This is a tent.
message($$replace(MESSAGE, tent, test))gibt folgende Meldung aus:
This is a test.resolve_depends(variablename, prefix)
Dies ist eine interne Funktion, die Sie in der Regel nicht benötigen werden.
Diese Funktion wurde in Qt 5.0 eingeführt.
reverse(variablename)
Gibt die Werte von ` variablename ` in umgekehrter Reihenfolge zurück.
Diese Funktion wurde in Qt 5.0 eingeführt.
section(variablename, separator, begin, end)
Gibt einen Ausschnitt des Werts von ` variablename` zurück. Diese Funktion ist ein Wrapper um ` QString::section`.
Beispielsweise gibt der folgende Aufruf ` surname` aus:
CONTACT = firstname:middlename:surname:phone
message($$section(CONTACT, :, 2, 2))shadowed(path)
Ordnet den Pfad vom Projektquellverzeichnis dem Build-Verzeichnis zu. Diese Funktion gibt bei In-Source-Builds ` path ` zurück. Sie gibt eine leere Zeichenkette zurück, wenn ` path ` außerhalb des Quellbaums verweist.
Diese Funktion wurde in Qt 5.0 eingeführt.
shell_path(path)
Konvertiert alle Verzeichnistrennzeichen innerhalb von ` path ` in Trennzeichen, die mit der beim Erstellen des Projekts verwendeten Shell kompatibel sind (d. h. der Shell, die vom `make`-Tool aufgerufen wird). Beispielsweise werden Schrägstriche in Backslashes umgewandelt, wenn die Windows-Shell verwendet wird.
Diese Funktion wurde in Qt 5.0 eingeführt.
Siehe auch system_path().
shell_quote(arg)
Setzt „ arg “ in Anführungszeichen für die Shell, die beim Erstellen des Projekts verwendet wird.
Diese Funktion wurde in Qt 5.0 eingeführt.
Siehe auch system_quote().
size(variablename)
Gibt die Anzahl der Werte von ` variablename` zurück.
Siehe auch str_size().
sort_depends(variablename, prefix)
Dies ist eine interne Funktion, die Sie in der Regel nicht benötigen werden.
Diese Funktion wurde in Qt 5.0 eingeführt.
sorted(variablename)
Gibt die Liste der Werte in ` variablename ` zurück, wobei die Einträge in aufsteigender ASCII-Reihenfolge sortiert sind.
Eine numerische Sortierung kann durch Auffüllen der Werte mit Nullen auf eine feste Länge mithilfe der Funktion ` format_number() ` erreicht werden.
Diese Funktion wurde in Qt 5.8 eingeführt.
split(variablename, separator)
Teilt den Wert von ` variablename ` in einzelne Werte auf und gibt diese als Liste zurück. Diese Funktion ist ein Wrapper um ` QString::split`.
Beispiel:
CONTACT = firstname:middlename:surname:phone
message($$split(CONTACT, :))sprintf(string, arguments...)
Ersetzt %1–%9 in „ string “ durch die Argumente, die in der durch Kommas getrennten Liste der Funktion „ arguments “ übergeben wurden, und gibt die verarbeitete Zeichenkette zurück.
str_member(arg [, start [, end]])
Diese Funktion ist identisch mit member(), mit dem Unterschied, dass sie auf einen String-Wert statt auf eine Listenvariable angewendet wird und sich die Indizes folglich auf Zeichenpositionen beziehen.
Diese Funktion kann zur Implementierung vieler gängiger Operationen zum Zerlegen von Zeichenketten verwendet werden:
# $$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)Hinweis: Bei diesen Implementierungen muss ein Null len -Argument separat behandelt werden.
Siehe auch member(), num_add().
Diese Funktion wurde in Qt 5.8 eingeführt.
str_size(arg)
Gibt die Anzahl der Zeichen im Argument zurück.
Siehe auch size().
Diese Funktion wurde in Qt 5.8 eingeführt.
system(Befehl[, Modus[, stsvar]])
Sie können diese Variante der Funktion „ system “ verwenden, um die Standardausgabe des Befehls abzurufen und einer Variablen zuzuweisen.
Beispiel:
UNAME = $$system(uname -s)
contains( UNAME, [lL]inux ):message( This looks like Linux ($$UNAME) to me )Ähnlich wie bei $$cat() akzeptiert das Argument „ mode “ die Werte „ blob “, „ lines “, „ true “ und „ false “. Die bisherigen Regeln zur Worttrennung (d. h. „empty“ oder „ true “ sowie „ false “) unterscheiden sich jedoch geringfügig.
Wenn Sie „ stsvar “ übergeben, wird der Beendigungsstatus des Befehls in dieser Variablen gespeichert. Wenn der Befehl abstürzt, ist der Status -1, andernfalls ein nicht-negativer Beendigungscode nach Wahl des Befehls. In der Regel reicht es aus, den Status mit Null zu vergleichen (Erfolg).
Siehe auch die Testvariante von system().
system_path(path)
Konvertiert alle Verzeichnistrennzeichen in ` path ` in Trennzeichen, die mit der Shell kompatibel sind, die von den Funktionen ` system() ` zum Aufrufen von Befehlen verwendet wird. Beispielsweise werden Schrägstriche für die Windows-Shell in Backslashes umgewandelt.
Diese Funktion wurde in Qt 5.0 eingeführt.
Siehe auch ` shell_path()`.
system_quote(arg)
Setzt „ arg “ in Anführungszeichen für die Shell, die von den Funktionen „ system() “ verwendet wird.
Diese Funktion wurde in Qt 5.0 eingeführt.
Siehe auch shell_quote().
take_first(variablename)
Gibt den ersten Wert von ` variablename ` zurück und entfernt ihn aus der Quellvariablen.
Dies ist beispielsweise bei der Implementierung von Warteschlangen hilfreich.
Diese Funktion wurde in Qt 5.8 eingeführt.
Siehe auch take_last(), first().
take_last(variablename)
Gibt den letzten Wert von ` variablename ` zurück und entfernt ihn aus der Quellvariablen.
Dies erleichtert beispielsweise die Implementierung von Stacks.
Diese Funktion wurde in Qt 5.8 eingeführt.
Siehe auch take_first(), last().
unique(variablename)
Gibt die Liste der Werte in ` variablename ` zurück, wobei doppelte Einträge entfernt wurden. Beispiel:
ARGS = 1 2 3 2 5 1
ARGS = $$unique(ARGS) #1 2 3 5`upper(arg1 [, arg2 ..., argn])`
Nimmt eine beliebige Anzahl von Argumenten entgegen und wandelt sie in Großbuchstaben um.
Siehe auch lower().
val_escape(Variablenname)
Führt eine Escape-Verarbeitung der Werte von ` variablename ` durch, sodass diese als qmake-Code geparst werden können.
Diese Funktion wurde in Qt 5.0 eingeführt.
© 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.