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ück
  • lines gibt jede Zeile als einen separaten Wert zurück (ohne Zeilenende)
  • true (Standardwert) und false 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). Wenn mode gleich false 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 auf n
  • obase=n setzt die Basis der Ausgabe auf n
  • width=n setzt die Mindestbreite der Ausgabe auf n. Ist die Ausgabe kürzer als width, wird sie mit Leerzeichen aufgefüllt
  • zeropad füllt die Ausgabe mit Nullen anstelle von Leerzeichen auf
  • padsign setzt ein Leerzeichen vor positive Werte in der Ausgabe
  • alwayssign vor positiven Werten in der Ausgabe wird ein Pluszeichen vorangestellt
  • leftalign 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.