Spec-Zone.ru › Qt 5.6

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

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'.

first(variablename)

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

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

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

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

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

Возвращает значение по заданной position в списке элементов в variablename. Если элемент не может быть найден в указанной позиции, возвращается пустая строка. variablename - единственное обязательное поле. Если не указано, position по умолчанию равно 0, что приводит к возвращению первого значения в списке.

prompt(question)

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

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.

sort_depends(variablename, prefix)

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

split(variablename, separator)

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

Например:

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

system(command[, mode])

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

Например:

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

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

system_path(path)

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

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

system_quote(arg)

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

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

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.6/qmake-function-reference.html

Spec-Zone.ru

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