Ersetzen-Funktionen
qmake bietet Funktionen, um den Inhalt von Variablen während des Konfigurationsprozesses zu verarbeiten. Diese Funktionen werden Ersetzungsfunktionen genannt. Normalerweise geben sie Werte zurück, die Sie anderen Variablen zuweisen können. Sie können diese Werte erhalten, indem Sie einer Funktion den Operator $$
voranstellen. Ersetzungsfunktionen können in eingebaute Funktionen und Funktionsbibliotheken unterteilt werden.
Siehe auch Testfunktionen.
Eingebaute Ersetzungsfunktionen
Die grundlegenden Ersetzungsfunktionen sind als eingebaute Funktionen implementiert.
absoluter_pfad(pfad[, basis])
Gibt den absoluten Pfad von path
zurück.
Wenn base
nicht angegeben ist, wird das aktuelle Verzeichnis als Basisverzeichnis verwendet. Wenn es sich um einen relativen Pfad handelt, wird er vor der Verwendung relativ zum aktuellen Verzeichnis aufgelöst.
Zum Beispiel 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(Variablenname)
Gibt den Basisnamen der in variablename
angegebenen Datei zurück.
Zum Beispiel:
FILE = /etc/passwd FILENAME = $$basename(FILE) #passwd
cat(filename[, mode])
Gibt den Inhalt von filename
zurück. Sie können die folgenden Optionen für mode
angeben:
blob
gibt den gesamten Inhalt der Datei als einen Wert zurücklines
gibt jede Zeile als einen separaten Wert zurück (ohne Zeilenende)true
(Standardwert) undfalse
gibt den Inhalt der Datei als separate Werte zurück, aufgeteilt nach den Regeln für die Aufteilung der Werteliste von qmake (wie bei Variablenzuweisungen). Wennmode
gleichfalse
ist, werden Werte, die nur ein Zeilenumbruchzeichen enthalten, in die Liste eingefügt, um anzuzeigen, wo in der Datei Zeilenumbrüche waren.
sauber_pfad(pfad)
Gibt path
zurück, wobei Verzeichnistrennzeichen normalisiert (in "/" umgewandelt) und überflüssige Trennzeichen entfernt sowie ". "s und ".. "s aufgelöst werden (soweit möglich). 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(Datei)
Gibt den Teil des Verzeichnisnamens der angegebenen Datei zurück. Zum Beispiel:
FILE = /etc/X11R6/XF86Config DIRNAME = $$dirname(FILE) #/etc/X11R6
enumerate_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 expandiert die Escape-Sequenzen \n
, \r
, \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 dargestellt:
message("First line$$escape_expand(\\n)Second line")
find(Variablenname, substr)
Gibt alle Werte in variablename
zurück, die mit dem regulären Ausdruck substr
übereinstimmen.
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(muster[, rekursiv=false])
Erweitert das angegebene Platzhaltermuster und gibt eine Liste von Dateinamen zurück. Wenn recursive
wahr ist, geht diese Funktion bis in Unterverzeichnisse.
first(Variablenname)
Gibt den ersten Wert von variablename
zurück.
Der folgende Aufruf gibt zum Beispiel firstname
zurück:
CONTACT = firstname middlename surname phone message($$first(CONTACT))
Siehe auch take_first(), last().
format_number(Zahl[, Optionen...])
Gibt number
in dem durch options
angegebenen Format zurück. Sie können die folgenden Optionen angeben:
ibase=n
setzt die Basis der Eingabe aufn
obase=n
setzt die Basis der Ausgabe aufn
width=n
setzt die Mindestbreite der Ausgabe aufn
. Ist die Ausgabe kürzer alswidth
, wird sie mit Leerzeichen aufgefülltzeropad
füllt die Ausgabe mit Nullen anstelle von Leerzeichen aufpadsign
setzt ein Leerzeichen vor positive Werte in der Ausgabealwayssign
vor positiven Werten in der Ausgabe wird ein Pluszeichen vorangestelltleftalign
platziert das Auffüllen rechts vom Wert in der Ausgabe
Fließkommazahlen werden derzeit nicht unterstützt.
Zum Beispiel konvertiert der folgende Aufruf die hexadezimale Zahl 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(variablenname)
Gibt den Wert der Umgebungsvariablen variablename
zurück. Dies entspricht weitgehend der $$(variablename)
Syntax. Die Funktion getenv
unterstützt jedoch Umgebungsvariablen mit Klammern in ihrem Namen.
Diese Funktion wurde in Qt 5.12 eingeführt.
join(Variablenname, glue, vorher, nachher)
Verbindet den Wert von variablename
mit glue
. Wenn dieser Wert nicht leer ist, stellt diese Funktion dem Wert before
voran und hängt ihn an after
an. variablename
ist das einzige erforderliche Feld, die anderen sind standardmäßig leere Strings. 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.
Der folgende Aufruf gibt zum Beispiel 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. Sie erzeugt eine eindeutig benannte Variable, 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 Codeschnipsel dargestellt
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 und wandelt sie in Kleinbuchstaben um.
Siehe auch upper().
member(Variablenname [, start [, end]])
Gibt den Teil des Listenwertes von variablename
mit den nullbasierten Elementindizes zwischen start
und end
(einschließlich) zurück.
Wenn start
nicht angegeben wird, ist der Wert standardmäßig Null. Diese Verwendung ist äquivalent zu $$first(variablename)
.
Wenn end
nicht angegeben wird, ist der Standardwert start
. Diese Verwendung entspricht einer einfachen Array-Indexierung, 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 sind.
Negative Zahlen stehen für Indizes, die am Ende der Liste beginnen, wobei -1 das letzte Element ist.
Wenn einer der beiden Indizes außerhalb des Bereichs liegt, wird eine leere Liste zurückgegeben.
Wenn end
kleiner als start
ist, werden die Elemente in umgekehrter Reihenfolge zurückgegeben.
Hinweis: Die Tatsache, dass der Endindex inklusiv und ungeordnet ist, impliziert, dass eine leere Liste nur dann zurückgegeben wird, wenn ein Index ungültig ist (was dadurch impliziert wird, dass die Eingabevariable leer ist).
Siehe auch str_member().
num_add(arg1 [, arg2 ..., argn])
Nimmt eine beliebige Anzahl numerischer Argumente, addiert sie und gibt die Summe zurück.
Die Subtraktion wird implizit unterstützt, da man einem numerischen Wert einfach ein Minuszeichen voranstellen kann, um ihn zu negieren:
sum = $$num_add($$first, -$$second)
Wenn der Operand bereits negativ sein kann, ist ein weiterer Schritt notwendig, um die Zahl zu normalisieren:
second_neg = -$$second second_neg ~= s/^--// sum = $$num_add($$first, $$second_neg)
Diese Funktion wurde in Qt 5.8 eingeführt.
prompt(frage [, dekorieren])
Zeigt die angegebene question
an und gibt einen aus stdin gelesenen Wert zurück.
Wenn decorate
true ist (die Vorgabe), erhält die Frage ein generisches Präfix und Suffix, das sie als Prompt identifiziert.
quote(zeichenkette)
Konvertiert eine ganze string
in eine einzelne Einheit und gibt das Ergebnis zurück. Dies ist nur eine schicke Art, die Zeichenkette in doppelte Anführungszeichen zu setzen.
re_escape(zeichenkette)
Gibt string
zurück, wobei jedes Sonderzeichen des regulären Ausdrucks mit einem Backslash maskiert wird. Diese Funktion ist ein Wrapper um QRegularExpression::escape.
read_registry(tree, key[, flag])
Gibt den Wert des Registry-Schlüssels key
innerhalb des Baums tree
zurück.
Es werden nur die Bäume HKEY_CURRENT_USER
(HKCU
) und HKEY_LOCAL_MACHINE
(HKLM
) unterstützt.
Der flag
kann 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 er relativ ist, wird er vor der Verwendung relativ zum aktuellen Projektverzeichnis aufgelöst.
Wenn filePath
relativ ist, wird es zuerst gegen das Basisverzeichnis aufgelöst; in diesem Fall fungiert diese Funktion effektiv als $$clean_path().
Diese Funktion wurde in Qt 5.0 eingeführt.
Siehe auch absolute_path(), clean_path().
replace(zeichenkette, alte_zeichenkette, neue_zeichenkette)
Ersetzt jede Instanz von old_string
durch new_string
im Inhalt der als string
übergebenen Variable. Zum Beispiel gibt der Code
MESSAGE = This is a tent. message($$replace(MESSAGE, tent, test))
gibt die Nachricht aus:
This is a test.
resolve_depends(Variablenname, prefix)
Dies ist eine interne Funktion, die Sie normalerweise nicht benötigen werden.
Diese Funktion wurde in Qt 5.0 eingeführt.
reverse(Variablenname)
Gibt die Werte von variablename
in umgekehrter Reihenfolge zurück.
Diese Funktion wurde in Qt 5.0 eingeführt.
Abschnitt(Variablenname, Trennzeichen, Anfang, Ende)
Gibt einen Abschnitt des Wertes von variablename
zurück. Diese Funktion ist ein Wrapper um QString::section.
Der folgende Aufruf gibt zum Beispiel surname
aus:
CONTACT = firstname:middlename:surname:phone message($$section(CONTACT, :, 2, 2))
shadowed(path)
Bildet den Pfad vom Quellverzeichnis des Projekts auf das Build-Verzeichnis ab. Diese Funktion gibt path
für In-Source-Builds zurück. Sie gibt einen leeren String zurück, wenn path
außerhalb des Quellbaums liegt.
Diese Funktion wurde in Qt 5.0 eingeführt.
shell_path(pfad)
Konvertiert alle Verzeichnistrennzeichen innerhalb von path
in Trennzeichen, die mit der Shell kompatibel sind, die während der Erstellung des Projekts verwendet wird (d.h. die Shell, die vom make-Werkzeug aufgerufen wird). Zum Beispiel 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)
Zitiert arg
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(Variablenname)
Gibt die Anzahl der Werte von variablename
zurück.
Siehe auch str_size().
sort_depends(Variablenname, Präfix)
Dies ist eine interne Funktion, die Sie normalerweise nicht benötigen werden.
Diese Funktion wurde in Qt 5.0 eingeführt.
sortiert(Variablenname)
Gibt die Liste der Werte in variablename
zurück, wobei die Einträge in aufsteigender ASCII-Reihenfolge sortiert sind.
Eine numerische Sortierung kann mit Hilfe der Funktion format_number() erreicht werden, indem die Werte auf eine feste Länge gebracht werden.
Diese Funktion wurde in Qt 5.8 eingeführt.
split(Variablenname, Trennzeichen)
Teilt den Wert von variablename
in einzelne Werte auf und gibt sie als Liste zurück. Diese Funktion ist ein Wrapper um QString::split.
Zum Beispiel:
CONTACT = firstname:middlename:surname:phone message($$split(CONTACT, :))
sprintf(zeichenkette, argumente...)
Ersetzt %1-%9 in string
durch die in der kommagetrennten Liste der Funktion arguments
übergebenen Argumente und gibt die verarbeitete Zeichenkette zurück.
str_member(arg [, start [, end]])
Diese Funktion ist identisch mit member(), mit dem Unterschied, dass sie mit einem String-Wert anstelle einer Listenvariablen arbeitet und sich die Indizes folglich auf Zeichenpositionen beziehen.
Mit dieser Funktion lassen sich viele gängige String-Slicing-Operationen implementieren:
# $$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: In diesen Implementierungen muss ein Null-Argument len
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 des Arguments 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 stdout vom Kommando zu erhalten und es einer Variablen zuzuweisen.
Ein Beispiel:
UNAME = $$system(uname -s) contains( UNAME, [lL]inux ):message( This looks like Linux ($$UNAME) to me )
Wie $$cat() nimmt das Argument mode blob
, lines
, true
und false
als Wert an. Die Regeln für die Worttrennung (d.h. leer oder true
und false
) unterscheiden sich jedoch geringfügig.
Wenn Sie stsvar
übergeben, wird der Exit-Status des Befehls in dieser Variablen gespeichert. Wenn der Befehl abstürzt, ist der Status -1, andernfalls ein nicht-negativer Exit-Code nach Wahl des Befehls. Normalerweise reicht es aus, den Status mit Null (Erfolg) zu vergleichen.
Siehe auch die Testvariante von system().
system_path(pfad)
Konvertiert alle Verzeichnistrennzeichen innerhalb von path
in Trennzeichen, die mit der Shell kompatibel sind, die von den system()
Funktionen zum Aufrufen von Befehlen verwendet wird. Zum Beispiel werden Schrägstriche in Backslashes für die Windows-Shell umgewandelt.
Diese Funktion wurde in Qt 5.0 eingeführt.
Siehe auch shell_path().
system_quote(arg)
Zitiert arg
für die Shell, die von den system()
Funktionen verwendet wird.
Diese Funktion wurde in Qt 5.0 eingeführt.
Siehe auch shell_quote().
take_first(Variablenname)
Gibt den ersten Wert von variablename
zurück und entfernt ihn aus der Quellvariablen.
Dies ist z.B. bei der Implementierung von Warteschlangen hilfreich.
Diese Funktion wurde in Qt 5.8 eingeführt.
Siehe auch take_last(), first().
take_last(Variablenname)
Gibt den letzten Wert von variablename
zurück und entfernt ihn aus der Quellvariablen.
Dies ist z.B. bei der Implementierung von Stapeln hilfreich.
Diese Funktion wurde in Qt 5.8 eingeführt.
Siehe auch take_first(), last().
unique(Variablenname)
Gibt die Liste der Werte in variablename
zurück, wobei doppelte Einträge entfernt werden. Zum 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 und wandelt sie in Großbuchstaben um.
Siehe auch lower().
val_escape(Variablenname)
Entfernt die Werte von variablename
so, dass sie als qmake-Code geparst werden können.
Diese Funktion wurde in Qt 5.0 eingeführt.
© 2025 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.