Spec-Zone.ru › Qt 5.12

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

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

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

Встроенные функции замены

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

absolute_path(path[, base])

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

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

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

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

Эта функция была добавлена в Qt 5.0.

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

Эта функция была добавлена в Qt 5.0.

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

dirname(file)

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

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

enumerate_vars

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

Эта функция была добавлена в Qt 5.0.

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

Эта функция была добавлена в Qt 5.0.

fromfile(filename, variablename)

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

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

getenv(variablename)

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

Эта функция была добавлена в Qt 5.12.

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)

Эта функция была добавлена в Qt 5.8.

prompt(question [, decorate])

Отображает указанный question, и возвращает значение, считанное из stdin.

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

quote(string)

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

re_escape(string)

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

read_registry(tree, key[, flag])

Возвращает значение ключа реестра key внутри дерева tree.

Поддерживаются только деревья HKEY_CURRENT_USER (HKCU) и HKEY_LOCAL_MACHINE (HKLM).

Флаг flag может быть WOW64_32KEY (32) или WOW64_64KEY (64).

Примечание: Эта функция доступна только на хостах Windows.

Эта функция была добавлена в Qt 5.12.1.

relative_path(filePath[, base])

Возвращает путь к filePath относительно base.

Если base не указан, используется текущий каталог проекта. Если это относительный путь, он разрешается относительно текущего каталога проекта перед использованием.

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

Эта функция была добавлена в Qt 5.0.

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

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

Эта функция была добавлена в Qt 5.0.

reverse(variablename)

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

Эта функция была добавлена в Qt 5.0.

section(variablename, separator, begin, end)

Возвращает часть значения variablename.

Эта функция является оболочкой вокруг QString::section.

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

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

shadowed(путь)

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

Эта функция была введена в Qt 5.0.

shell_path(путь)

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

Эта функция была введена в Qt 5.0.

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

shell_quote(арг)

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

Эта функция была введена в Qt 5.0.

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

size(имя_переменной)

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

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

sort_depends(имя_переменной, префикс)

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

Эта функция была введена в Qt 5.0.

sorted(имя_переменной)

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

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

Эта функция была введена в Qt 5.8.

split(имя_переменной, разделитель)

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

Например:

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

sprintf(строка, аргументы...)

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

str_member(арг [, начало [, конец]])

Эта функция идентична 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().

Эта функция была введена в Qt 5.8.

str_size(арг)

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

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

Эта функция была введена в Qt 5.8.

system(команда[, режим[, переменная_со_статусом]])

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

Например:

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

Как и $$cat(), аргумент режим принимает значения blob, lines, true, и false. Однако правила разбиения слов унаследованного типа (т.е. пустые или true, и false) отличаются незначительно.

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

См. также тестовую версию system().

system_path(путь)

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

Эта функция была введена в Qt 5.0.

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

system_quote(арг)

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

Эта функция была введена в Qt 5.0.

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

take_first(имя_переменной)

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

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

Эта функция была введена в Qt 5.8.

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

take_last(имя_переменной)

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

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

Эта функция была введена в Qt 5.8.

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

unique(имя_переменной)

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

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

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

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

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

val_escape(имя_переменной)

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

Эта функция была введена в Qt 5.0.

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

Spec-Zone.ru

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