[Предыдущая: Описание переменных qmake] [Содержание] [Следующая: Конфигурирование окружения qmake] Справочник по функциям qmake
|
Возвращает базовое имя (basename) заданного файла. Например:
FILE = /etc/passwd FILENAME = $$basename(FILE) #passwd
[Условие]
Эта функция может использоваться для тестирования переменных, помещенных в переменную CONFIG. Это тоже самое что обычные области видимости в старом стиле (tmake), но имеется дополнительное преимущество - второй параметр может быть передан для тестирования активного конфига (config). Так как порядок переменных имеет важное значение для переменных CONFIG (т.е. последнее присваивание будет учитываться активным конфигом для взаимно исключающих значений), второй параметр может быть использован для задания набора учитываемых переменных. Например:
CONFIG = debug CONFIG += release CONFIG(release, debug|release):message(Release build!) #будет печатать CONFIG(debug, debug|release):message(Debug build!) #печати нет
Так как релиз учитывает активные настройки (для функции синтаксического разбора) он будет использовать 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.)
[Условие]
Вычисляет содержимое строки используя правила синтаксиса qmake'а и возвращает true. Объявления и присваивания могут быть использованы в строке для модификации значений существующих переменных или создания новых объявлений.
Например:
eval(TARGET = myapp) { message($$TARGET) }
Обратите внимание на то, что кавычки можно использовать для разделения строки, и что возвращаемое значение может быть отброшено, если не нужно.
[Условие]
Проверяет, существует ли файл с именем 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', а MY_VAR3 будет содержать '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". Использование кавычек не обязательно.
Замечание: По умолчанию, сообщения выводятся для каждого Make-файла, сгенерированного qmake для данного проекта. Если вы хотите убедиться, что сообщения появляются только один раз для каждого проекта, проверьте переменную build_pass в сочетании с областью видимости для фильтрации сообщений во время сборки; например:
!build_pass:message( "This is a message" )
Выводит на экран указанный вопрос question и возвращает значение, прочитанное из стандартного устройства ввода (stdin).
Конвертирует всю строку string в один объект и возвращает результат. Символы новой строки, возвращения каретки и табуляции задаются в строке с помощью \n \r и \t. Возвращаемое значение не содержит одиночных или двойных кавычек, если вы сами не поместили их в строку, но возвращаемое значение будет помещено в одно значение (для литеральных расширений).
Заменяет каждый экземпляр old_string на new_string в содержимом переменной, переданной как string. Например, код
MESSAGE = This is a tent. message($$replace(MESSAGE, tent, test))
напечатает сообщение:
This is a test.
Замещает %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 © 2008 Nokia | Торговые марки | Qt 4.4.3 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |