En esta página

Funciones de reemplazo

qmake proporciona funciones para procesar el contenido de las variables durante el proceso de configuración. Estas funciones se denominan funciones de reemplazo. Normalmente, devuelven valores que puedes asignar a otras variables. Puede obtener estos valores anteponiendo a una función el operador $$. Las funciones de reemplazo pueden dividirse en funciones incorporadas y bibliotecas de funciones.

Véase también Funciones de prueba.

Funciones de sustitución incorporadas

Las funciones de sustitución básicas se implementan como funciones incorporadas.

ruta_absoluta(ruta[, base])

Devuelve la ruta absoluta de path.

Si no se especifica base, utiliza el directorio actual como directorio base. Si es una ruta relativa, se resuelve respecto al directorio actual antes de su uso.

Por ejemplo, la siguiente llamada devuelve la cadena "/home/johndoe/myproject/readme.txt":

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

Esta función se introdujo en Qt 5.0.

Véase también clean_path(), relative_path().

basename(variablename)

Devuelve el nombre base del archivo especificado en variablename.

Por ejemplo:

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

cat(nombrearchivo[, modo])

Devuelve el contenido de filename. Puede especificar las siguientes opciones para mode:

  • blob devuelve todo el contenido del archivo como un solo valor
  • lines devuelve cada línea como un valor independiente (sin finales de línea)
  • true (valor por defecto) y false devuelven el contenido del archivo como valores separados, divididos según las reglas de división de listas de valores de qmake (como en las asignaciones de variables). Si mode es false, los valores que sólo contienen un carácter de nueva línea se insertan en la lista para indicar dónde estaban los saltos de línea en el archivo.

clean_path(ruta)

Devuelve path con los separadores de directorio normalizados (convertidos a "/") y los redundantes eliminados, y los ". "s y ".. "s resueltos (en la medida de lo posible). Esta función es una envoltura de QDir::cleanPath.

Esta función se introdujo en Qt 5.0.

Véase también absolute_path(), relative_path(), shell_path(), system_path().

dirname(archivo)

Devuelve la parte del nombre del directorio del archivo especificado. Por ejemplo

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

enumerar_variables

Devuelve una lista de todos los nombres de variables definidas.

Esta función se introdujo en Qt 5.0.

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

Acepta un número arbitrario de argumentos. Expande las secuencias de escape \n, \r, \t para cada argumento y devuelve los argumentos como una lista.

Nota: Si especifica la cadena a expandir literalmente, necesita escapar las barras invertidas, como se ilustra en el siguiente fragmento de código:

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

find(nombrevariable, substr)

Devuelve todos los valores de variablename que coinciden con la expresión regular 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 contendrá '-Lone -Ltwo -Lthree -Lfour -Lfive', y MY_VAR3 contendrá 'three two three'.

ficheros(patrón[, recursivo=false])

Expande el patrón comodín especificado y devuelve una lista de nombres de archivo. Si recursive es verdadero, esta función desciende en subdirectorios.

first(nombrevariable)

Devuelve el primer valor de variablename.

Por ejemplo, la siguiente llamada devuelve firstname:

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

Véase también take_first(), last().

format_number(number[, options...])

Devuelve number en el formato especificado por options. Puede especificar las siguientes opciones:

  • ibase=n establece la base de la entrada en n
  • obase=n establece la base de la salida en n
  • width=n establece la anchura mínima de la salida en n. Si la salida es más corta que width, se rellena con espacios
  • zeropad rellena la salida con ceros en lugar de espacios
  • padsign antepone un espacio a los valores positivos de la salida
  • alwayssign antepone un signo más a los valores positivos de la salida
  • leftalign coloca el relleno a la derecha del valor de salida.

Actualmente no se admiten números en coma flotante.

Por ejemplo, la siguiente llamada convierte el número hexadecimal BAD a 002989:

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

Esta función se introdujo en Qt 5.0.

fromfile(nombrearchivo, nombrevariable)

Evalúa filename como un archivo de proyecto qmake y devuelve el valor asignado a variablename.

Véase también infile().

getenv(nombrevariable)

Devuelve el valor de la variable de entorno variablename. Esto es equivalente a la sintaxis de $$(variablename). La función getenv, sin embargo, soporta variables de entorno con paréntesis en su nombre.

Esta función se introdujo en Qt 5.12.

join(nombrevariable, cola, antes, después)

Une el valor de variablename con glue. Si este valor no está vacío, esta función prefija el valor con before y lo sufija con after. variablename es el único campo requerido, los otros por defecto son cadenas vacías. Si necesita codificar espacios en glue, before, o after, debe entrecomillarlos.

last(nombrevariable)

Devuelve el último valor de variablename.

Por ejemplo, la siguiente llamada devuelve phone:

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

Véase también take_last(), first().

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

Toma un número arbitrario de argumentos. Crea una variable de nombre único que contiene una lista de los argumentos, y devuelve el nombre de esa variable. Puede utilizar la variable para escribir un bucle como se ilustra en el siguiente fragmento de código

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

en lugar de

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

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

Toma un número arbitrario de argumentos y los convierte a minúsculas.

Véase también upper().

member(nombrevariable [, inicio [, fin]])

Devuelve la porción del valor de lista de variablename con los índices de elemento basados en cero entre start y end (inclusive).

Si no se indica start, por defecto es cero. Este uso es equivalente a $$first(variablename).

Si no se indica end, el valor predeterminado es start. Este uso representa una indexación de matriz simple, ya que se devuelve exactamente un elemento.

También es posible especificar el inicio y el final en un único argumento, con los números separados por dos puntos.

Los números negativos representan índices que comienzan desde el final de la lista, siendo -1 el último elemento.

Si cualquiera de los índices está fuera de rango, se devuelve una lista vacía.

Si end es menor que start, los elementos se devuelven en orden inverso.

Nota: El hecho de que el índice final sea inclusivo y desordenado implica que sólo se devolverá una lista vacía cuando un índice no sea válido (lo que implica que la variable de entrada esté vacía).

Véase también str_member().

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

Toma un número arbitrario de argumentos numéricos y los suma, devolviendo la suma.

La resta está implícitamente soportada debido a la posibilidad de añadir un signo menos a un valor numérico para negarlo:

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

Si el operando ya es negativo, es necesario otro paso para normalizar el número:

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

Esta función se introdujo en Qt 5.8.

prompt(pregunta [, decorar])

Muestra el question especificado y devuelve un valor leído de stdin.

Si decorate es verdadero (por defecto), la pregunta recibe un prefijo y sufijo genéricos que la identifican como prompt.

quote(cadena)

Convierte un string entero en una sola entidad y devuelve el resultado. Es una forma elegante de encerrar la cadena entre comillas dobles.

re_escape(cadena)

Devuelve string con cada carácter especial de expresión regular escapado con una barra invertida. Esta función es una envoltura de QRegularExpression::escape.

read_registry(árbol, clave[, bandera])

Devuelve el valor de la clave de registro key dentro del árbol tree.

Sólo se admiten los árboles HKEY_CURRENT_USER (HKCU) y HKEY_LOCAL_MACHINE (HKLM).

El flag puede ser WOW64_32KEY (32) o WOW64_64KEY (64).

Nota: Esta función sólo está disponible en hosts Windows.

Esta función se introdujo en Qt 5.12.1.

relative_path(filePath[, base])

Devuelve la ruta a filePath relativa a base.

Si no se especifica base, es el directorio actual del proyecto. Si es relativa, se resuelve en relación con el directorio actual del proyecto antes de su uso.

Si filePath es relativo, se resuelve primero contra el directorio base; en ese caso, esta función actúa efectivamente como $$clean_path().

Esta función se introdujo en Qt 5.0.

Véase también absolute_path(), clean_path().

replace(cadena, cadena_antigua, cadena_nueva)

Sustituye cada instancia de old_string por new_string en el contenido de la variable suministrada como string. Por ejemplo, el código

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

imprime el mensaje:

This is a test.

resolve_depends(nombre_variable, prefijo)

Esta es una función interna que normalmente no necesitará.

Esta función se introdujo en Qt 5.0.

reverse(nombrevariable)

Devuelve los valores de variablename en orden inverso.

Esta función se introdujo en Qt 5.0.

section(nombrevariable, separador, inicio, fin)

Devuelve una sección del valor de variablename. Esta función envuelve a QString::section.

Por ejemplo, la siguiente llamada devuelve surname:

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

shadowed(ruta)

Asigna la ruta desde el directorio fuente del proyecto al directorio de construcción. Esta función devuelve path para compilaciones dentro de la fuente. Devuelve una cadena vacía si path apunta fuera del árbol de fuentes.

Esta función se introdujo en Qt 5.0.

shell_path(ruta)

Convierte todos los separadores de directorio dentro de path en separadores compatibles con el shell que se utiliza al construir el proyecto (es decir, el shell que invoca la herramienta make). Por ejemplo, las barras oblicuas se convierten en barras invertidas cuando se utiliza el shell de Windows.

Esta función se introdujo en Qt 5.0.

Véase también system_path().

shell_quote(arg)

Cita arg para el shell que se utiliza al construir el proyecto.

Esta función se introdujo en Qt 5.0.

Véase también system_quote().

size(nombrevariable)

Devuelve el número de valores de variablename.

Véase también str_size().

sort_depends(nombre_variable, prefijo)

Esta es una función interna que normalmente no necesitará.

Esta función se introdujo en Qt 5.0.

sorted(nombrevariable)

Devuelve la lista de valores en variablename con las entradas ordenadas en orden ASCII ascendente.

La ordenación numérica puede realizarse poniendo los valores a cero con la ayuda de la función format_number().

Esta función se introdujo en Qt 5.8.

split(nombrevariable, separador)

Divide el valor de variablename en valores separados y los devuelve como una lista. Esta función envuelve a QString::split.

Por ejemplo:

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

sprintf(cadena, argumentos...)

Sustituye %1-%9 en string por los argumentos pasados en la lista separada por comas de la función arguments y devuelve la cadena procesada.

str_member(arg [, inicio [, fin]])

Esta función es idéntica a member(), salvo que opera sobre un valor de cadena en lugar de una variable de lista y, en consecuencia, los índices se refieren a posiciones de caracteres.

Esta función puede utilizarse para implementar muchas operaciones comunes de troceado de cadenas:

# $$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)

Nota: En estas implementaciones, un argumento cero len debe tratarse por separado.

Véase también member(), num_add().

Esta función se introdujo en Qt 5.8.

str_size(arg)

Devuelve el número de caracteres del argumento.

Véase también size().

Esta función se introdujo en Qt 5.8.

system(comando[, modo[, stsvar]])

Puedes utilizar esta variante de la función system para obtener stdout del comando y asignarlo a una variable.

Por ejemplo:

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

Al igual que $$cat(), el argumento mode toma blob, lines, true, y false como valor. Sin embargo, las reglas de división de palabras heredadas (es decir, vacías o true, y false) difieren sutilmente.

Si pasa stsvar, el estado de salida del comando se almacenará en esa variable. Si el comando falla, el estado será -1, de lo contrario un código de salida no negativo a elección del comando. Normalmente, comparar el estado con cero (éxito) es suficiente.

Véase también la variante de prueba de system().

system_path(ruta)

Convierte todos los separadores de directorio dentro de path a separadores que son compatibles con el shell que es utilizado por las funciones de system() para invocar comandos. Por ejemplo, las barras oblicuas se convierten en barras invertidas para el shell de Windows.

Esta función se introdujo en Qt 5.0.

Véase también shell_path().

system_quote(arg)

Cita arg para el intérprete de comandos utilizado por las funciones system().

Esta función se introdujo en Qt 5.0.

Véase también shell_quote().

take_first(nombre_variable)

Devuelve el primer valor de variablename y lo elimina de la variable fuente.

Esto resulta práctico para implementar colas, por ejemplo.

Esta función se introdujo en Qt 5.8.

Véase también take_last(), first().

take_last(nombre_variable)

Devuelve el último valor de variablename y lo elimina de la variable fuente.

Esto resulta práctico para implementar pilas, por ejemplo.

Esta función se introdujo en Qt 5.8.

Véase también take_first(), last().

unique(nombrevariable)

Devuelve la lista de valores en variablename con las entradas duplicadas eliminadas. Por ejemplo:

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

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

Toma un número arbitrario de argumentos y los convierte a mayúsculas.

Véase también lower().

val_escape(nombre_variable)

Escapa los valores de variablename de una manera que permite analizarlos como código qmake.

Esta función se introdujo en 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.