Spec-Zone.ru › Qt 5.11

Функции замены

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 не указано, это текущая директория проекта. Если оно относительно, оно разрешается относительно текущей директории проекта перед использованием.

Если filePath относительно, оно сначала разрешается относительно базовой директории; в этом случае эта функция эффективно действует как $$clean_path().

См. также 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.

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, :))

sprintf(string, arguments...)

Заменяет %1-%9 в string на аргументы, переданные в качестве запятой-разделённого списка, и возвращает обработанную строку.

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/archives/qt-5.11/qmake-function-reference.html

Spec-Zone.ru

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