Spec-Zone.ru › Qt 5.9

Функции подстановки

qmake предоставляет функции для обработки содержимого переменных во время процесса конфигурации. Эти функции называются функциями подстановки. Обычно они возвращают значения, которые можно присвоить другим переменным. Эти значения можно получить, добавив перед функцией оператор $$. Функции подстановки можно разделить на встроенные функции и функции из библиотек.

См. также Функции тестирования.

Встроенные функции подстановки

Базовые функции подстановки реализованы как встроенные функции.

absolute_path(path[, base])

Возвращает абсолютный путь к path.

Если base не указано, используется текущая директория в качестве базовой.

Например, следующий вызов возвращает строку "/home/johndoe/myproject/readme.txt":

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

См. также clean_path(), relative_path().

basename(variablename)

Возвращает имя файла (без пути), указанное в variablename.

Например:

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

cat(filename[, mode])

Возвращает содержимое filename. Вы можете указать следующие параметры для mode:

  • blob возвращает все содержимое файла как одно значение
  • lines возвращает каждую строку как отдельное значение (без символов конца строки)
  • true (значение по умолчанию) и false возвращают содержимое файла как отдельные значения, разделенные в соответствии с правилами разделения списков значений qmake (как в присвоении переменных). Если mode равно false, значения, содержащие только символ новой строки, вставляются в список, чтобы указать, где в файле были разрывы строк.

clean_path(path)

Возвращает path с нормализованными разделителями каталогов (преобразованными в "/") и удаленными лишними, и решёнными "." и "..". Эта функция является обёрткой вокруг QDir::cleanPath.

См. также absolute_path(), relative_path(), shell_path(), system_path().

dirname(file)

Возвращает часть имени каталога указанного файла. Например:

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

enumerate_vars

Возвращает список всех определённых имён переменных.

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

Принимает произвольное количество аргументов. Она расширяет последовательности экранирования \n, \r, \t для каждого аргумента и возвращает аргументы в виде списка.

Примечание: Если вы хотите указать строку для расширения буквально, вам нужно экранировать обратные слеши, как показано в следующем фрагменте кода:

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

find(variablename, substr)

Возвращает все значения в variablename которые соответствуют регулярному выражению 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 будет содержать '-Lone -Ltwo -Lthree -Lfour -Lfive', а MY_VAR3 будет содержать 'three two three'.

files(pattern[, recursive=false])

Расширяет указанный шаблон подстановочных символов и возвращает список имён файлов. Если recursive равно true, эта функция спускается в подкаталоги.

first(variablename)

Возвращает первое значение переменной variablename.

Например, следующий вызов возвращает firstname:

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

См. также take_first(), last().

format_number(number[, options...])

Возвращает number в формате, заданном options. Вы можете указать следующие параметры:

  • ibase=n устанавливает основание ввода в n
  • obase=n устанавливает основание вывода в n
  • width=n устанавливает минимальную ширину вывода в n. Если вывод короче width, он дополняется пробелами
  • zeropad дополняет вывод нулями вместо пробелов
  • padsign добавляет пробел перед положительными значениями в выводе
  • alwayssign добавляет знак «плюс» перед положительными значениями в выводе
  • leftalign помещает отступ справа от значения в выводе

Десятичные числа в настоящее время не поддерживаются.

Например, следующий вызов преобразует шестнадцатеричное число BAD в 002989:

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

fromfile(filename, variablename)

Вычисляет filename как файл проекта qmake и возвращает значение, присвоенное variablename.

См. также infile().

getenv(variablename)

Возвращает значение переменной среды variablename. Это в основном эквивалентно синтаксису $$(variablename). Однако функция getenv поддерживает переменные среды с скобками в их имени.

join(variablename, glue, before, after)

Объединяет значение variablename с glue. Если это значение не пустое, эта функция добавляет префикс before и суффикс after. variablename — единственное обязательное поле, остальные по умолчанию пустые строки. Если вам нужно закодировать пробелы в glue, before, или after, вы должны их заключить в кавычки.

last(variablename)

Возвращает последнее значение переменной variablename.

Например, следующий вызов возвращает phone:

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

См. также take_last(), first().

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

Принимает произвольное количество аргументов. Она создаёт переменную с уникальным именем, которая содержит список аргументов, и возвращает имя этой переменной. Вы можете использовать эту переменную для написания цикла, как показано в следующем фрагменте кода:

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

вместо:

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

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

Принимает произвольное количество аргументов и преобразует их в нижний регистр.

См. также upper().

member(variablename [, start [, end]])

Возвращает фрагмент списка значений переменной variablename с индексами элементов от start до end (включительно).

Если start не указано, оно по умолчанию равно нулю. Это использование эквивалентно $$first(variablename).

Если end не указано, оно по умолчанию равно start. Это использование представляет собой простой индексирование массива, так как будет возвращён ровно один элемент.

Также можно указать start и end в одном аргументе, разделив числа двумя точками.

Отрицательные числа представляют индексы, начиная с конца списка, причём -1 — это последний элемент.

Если любой из индексов выходит за пределы диапазона, возвращается пустой список.

Если end меньше start, элементы возвращаются в обратном порядке.

Примечание: То, что конечный индекс включительно и неупорядочен, подразумевает, что пустой список будет возвращен только тогда, когда индекс недействителен (что подразумевается пустой переменной ввода).

См. также str_member().

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

Принимает произвольное количество числовых аргументов и суммирует их, возвращая сумму.

Вычитание неявно поддерживается из-за возможности просто добавить знак минус перед числовым значением, чтобы изменить его знак:

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

Если операнд может быть уже отрицательным, необходимо выполнить другую операцию для нормализации числа:

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

prompt(question [, decorate])

Выводит заданный question, и возвращает значение, считанное со стандартного ввода.

Если decorate равно true (по умолчанию), к вопросу добавляются общие префикс и суффикс, определяющие его как запрос.

quote(string)

Преобразует всю string в единицу и возвращает результат. Это просто удобный способ заключить строку в двойные кавычки.

re_escape(string)

Возвращает string с каждым специальным символом регулярного выражения, экранированным обратным слешем. Эта функция является обёрткой вокруг QRegExp::escape.

relative_path(filePath[, base])

Возвращает путь к filePath относительно base. Если base не указано, используется текущая директория проекта. Эта функция является обёрткой вокруг QDir::relativeFilePath.

См. также absolute_path(), clean_path().

replace(string, old_string, new_string)

Заменяет каждое вхождение old_string на new_string в содержимом переменной, переданной как string. Например, код

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

выводит сообщение:

This is a test.

sprintf(string, arguments...)

Заменяет %1-%9 на переданные в качестве аргументов через запятую список функции arguments и возвращает обработанную строку.

resolve_depends(variablename, prefix)

Это внутренняя функция, которой вы обычно не будете пользоваться.

reverse(variablename)

Возвращает значения variablename в обратном порядке.

section(variablename, separator, begin, end)

Возвращает часть значения переменной variablename . Эта функция является обёрткой вокруг QString::section.

Например, следующий вызов выводит surname:

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

shadowed(path)

Преобразует путь из каталога исходного проекта в каталог сборки. Эта функция возвращает path для сборки из исходных файлов. Она возвращает пустую строку, если path указывает на каталог вне дерева исходных кодов.

shell_path(path)

Преобразует все разделители каталогов в path в разделители, совместимые с оболочкой, используемой при сборке проекта (то есть, оболочкой, вызываемой инструментом make). Например, слэши преобразуются в обратные слэши при использовании оболочки Windows.

См. также system_path().

shell_quote(arg)

Заключает arg в кавычки для оболочки, используемой при сборке проекта.

См. также system_quote().

size(variablename)

Возвращает количество значений в variablename.

См. также str_size().

sort_depends(variablename, prefix)

Эта внутренняя функция обычно не требуется.

sorted(variablename)

Возвращает список значений в variablename с записями, отсортированными по возрастанию в ASCII коде.

Сортировка по числовому значению может быть выполнена путем дополнения значений нулями до заданной длины с помощью функции format_number().

split(variablename, separator)

Разделяет значение variablename на отдельные значения и возвращает их в виде списка. Эта функция является обёрткой вокруг QString::split.

Например:

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

str_member(arg [, start [, end]])

Эта функция идентична member(), за исключением того, что она работает со строковым значением вместо переменной списка, и, следовательно, индексы относятся к позициям символов.

Эта функция может быть использована для реализации многих общих операций среза строк:

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

Примечание: В этих реализациях нулевой len аргумент необходимо обработать отдельно.

См. также member(), num_add().

str_size(arg)

Возвращает количество символов в аргументе.

См. также size().

system(command[, mode[, stsvar]])

Вы можете использовать этот вариант функции system для получения stdout из команды и присвоения его переменной.

Например:

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

Если вы передадите stsvar, код завершения команды будет сохранён в этой переменной. Если команда аварийно завершится, статус будет -1, в противном случае — неотрицательный код завершения по выбору команды. Обычно сравнение статуса с нулём (успех) является достаточным.

См. также тестовый вариант system().

system_path(path)

Преобразует все разделители каталогов в path в разделители, совместимые с оболочкой, используемой функциями system() для вызова команд. Например, косые черты преобразуются в обратные косые черты для оболочки Windows.

См. также shell_path().

system_quote(arg)

Приводит arg в кавычки для оболочки, используемой функциями system().

См. также shell_quote().

take_first(variablename)

Возвращает первое значение из variablename и удаляет его из исходной переменной.

Это обеспечивает удобство для реализации очередей, например.

См. также take_last(), first().

take_last(variablename)

Возвращает последнее значение из variablename и удаляет его из исходной переменной.

Это обеспечивает удобство для реализации стеков, например.

См. также take_first(), last().

unique(variablename)

Возвращает список значений в variablename с удаленными дублирующимися записями. Например:

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

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

Принимает любое количество аргументов и преобразует их в верхний регистр.

См. также lower().

val_escape(variablename)

Экранирует значения variablename таким образом, чтобы они могли быть обработаны как код qmake.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qmake-function-reference.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API