Home · All Classes · Main Classes · Grouped Classes · Modules · Functions |
[Предыдущая: Справочник по Переменным qmake] [Содержание] [Следующая: Конфигурирование Окружения qmake]
qmake предоставляет встроенные функции для обработки содержимого переменных и проверки выполнения условий в процессе конфигурирования. Функции, обрабатывающие содержимое переменных обычно возвращают значение, которое может быть присвоено другим переменным и эти значения возвращенные функцией предваряются оператором $$. Функции, выполняющие проверку условий, обычно используются как уловия ветвления. Ниже приведены описания функций.
Возвращает имя файла из спецификации файла. Например:
FILE = /etc/passwd FILENAME = $$basename($$FILE) #passwd
[Условие]
Эта функция может использоваться для проверки значений, помещенных в переменную CONFIG. Это тоже самое, что (tmake) в старом стиле, но имеет дополнительное преимущество: второй параметр можно опустить, в этом случае проверяется активность config. Поскольку порядок значений в переменной CONFIG важен (т.е. последний набор будет рассматриваться config, как взаимоисключающие значения), то второй параметр может использоваться для определения рассматриваемого набора значений. Например:
CONFIG = debug CONFIG += release CONFIG(release, debug|release):message(Release build!) #will print CONFIG(debug, debug|release):message(Debug build!) #no print
Поскольку release считается активной установкой (из-за особенностей парсинга) то оно будет использоваться CONFIG для генерирования собираемого файла. В большинстве случае второй параметр не необходим, но для определения взаимоисключающих проверок он является неоценимым.
[Условие]
Выполняется, если переменная variablename содержит значение value; в противном случае не выполняется. Вы можете проверять возвращаемое данной фунцией значение, используя ветвление.
Например:
contains( drivers, network ) { # drivers contains 'network' message( "Configuring for network build..." ) HEADERS += network.h SOURCES += network.cpp }
Содержимое ветки выполнится только при условии, что переменная drivers содержит значение network. В этом случае соответствующие файлы будут добавлены в переменные SOURCES и HEADERS.
[Условие]
Выполняется, если переменная variablename содержит список с количеством значений, равным number; в противном случае не выполняется.
Данная переменная используется для гарантии, что инструкции, располагающиеся в ветке, выполняются только в том случае, если переменная содержит правильное количество значений; например:
options = $$find(CONFIG, "debug") $$find(CONFIG, "release") count(options, 2) { message(Both release and debug specified.) }
Возвращает имя директории из спецификации файла. Например:
FILE = /etc/X11R6/XF86Config DIRNAME = dirname($$FILE) #/etc/X11R6
Данная функция никогда не возвращает значение. qmake отображает пользователю переданную в функцию строку string и завершает работу. Данная функция должна использоваться только для фатальных ошибок.
Например:
error(An error has occurred in the configuration process.)
[Условие]
Проверяет, существует ли файл с именем filename. Если файл существует, условие выполняется; в противном случае не выполняется. Если имя файла задано с помощью регулярного выражения, то условие выполняется, если есть хотя бы один файл с именем, соответствующим регулярному выражению.
Например:
exists( $(QTDIR)/lib/libqt-mt* ) { message( "Configuring for multi-threaded Qt..." ) CONFIG += thread }
Обратите внимание, что разделитель директорий "/" может использоваться независимо от используемой платформы.
Возвращает все заначения из переменной variablename, соответствующие выражению substr. 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', а MYVAR3 будет содержать 'three two three'.
Это специальная проверочная фунция начинает цикл по всем значениям переменной list, устанавливая iterate в значения списка по очереди. Для удобства, если list равно 1..10, то iterate будет перебирать значения от 1 до 10.
Использование ситуации "else" в строке условия цикла for() не предусмотрено.
Например:
LIST = 1 2 3 for(a, LIST):exists(file.$${a}):message(I see a file.$${a}!)
[Условие]
Заменяет себя на содержимое файла, заданного с помощью filename. Условие выполняется, если содержимое файла filename включено; в противном случае условие не выполняется. Включенный файл обрабатывается немедленно.
С помощью данной фунции Вы можете проверить, был ли включен файл, используя ее в качестве условия ветвления; например:
include( shared.pri ) OPTIONS = standard custom !include( options.pri ) { message( "No custom build options specified" ) OPTIONS -= custom }
[Условие]
Выполняется, если файл filename (во время парсинга qmake) содержит переменную var со значением val; в противном случае не выполняется. Если Вы не передаете третий аргумент (val), то функция только проверит, была ли переменная var объявлена в файле.
[Условие]
Выполняется, если переменная variablename пуста; в противном случае не выполняется. Эквивалентно count( variablename, 0 ).
Например:
isEmpty( CONFIG ) { CONFIG += qt warn_on debug }
Присоединяет значение переменной variablename к переменной glue. Если эти значения не пусты, то значения снабжаются префиксами before и суффиксами after. Обязательным является только параметр variablename, все другие по умолчанию содержат пустые строки. Если Вам необходимо указать заначения glue, before или after, то должны указать их.
Возвращает значение, стоящее в позиции position списка переменной variablename. Если в указанной позиции не найдено значение, возвращается пустая строка. Обязательным аргуменом является только variablename. Если position не задано, то имеет значение по умолчанию, равное 0, указывающее, что должно быть возвращено первое значение из списка.
Данная функция просто выводит сообщение в консоль. В отличие от функции error(), данная функция позволяет продолжить обработку.
message( "This is a message" )
Вышеприведенная строка заставляет вывести в консоль "This is a message". Использование кавычек не обязательно.
Отображает вопрос question и возвращает значение, прочитанное из stdin.
Конвертирует строку string в значение списка переменной и возвращает результат. Символы новой строки, возвращения каретки и табуляции задаются в строке с помощью \n \r и \t. Возвращаемое значение не содержит двойных кавычек, если Вы сами не поместили их в строку, но возвращаемое значение будет помещено в одно значение (для литеральных расширений).
Замещает %1-%9 на аргументы, переданные в разделенном запятыми списке argumentsи возвращает полученную строку.
[Условие]
Выполняет заданную команду command в другом процессе и выполняется, если команда завершается с нулевым статусом; в противном случае не выполняется. Вы можете проверить значение, возвращенное данной функцией для организации ветвления:
Например:
system(ls /bin):HAS_BIN=FALSE
В качестве альтернативы, можно использовать данную функцию для занесения в переменную значения stdout и stderr, полученное от команды. Это можно использовать, например, для получения информации о платформе:
UNAME = $$system(uname -s) contains( UNAME, [lL]inux ):message( This looks like Linux ($$UNAME) to me )
Возвращает список уникальных значений списка переменной (удаляются повторения значений). Например:
ARGS = 1 2 3 2 5 1 ARGS = $$unique(ARGS) #1 2 3 5
Данная функция отображает пользователю строку string. message() является синонимом для warning().
[Предыдущая: Справочник по Переменным qmake] [Содержание] [Следующая: Конфигурирование Окружения qmake]
Copyright © 2005 Trolltech | Trademarks | Qt 4.1.0 |