Pro file qt: qmake Project Files | Qt 4.8
Файл Qt .pro: добавление пути, включающего каталог «include», не работает
Я включаю новые файлы в свой проект Qt. Заголовочные файлы устанавливаются другим приложением по пути, подобному этому:
INCLUDEPATH += <path>\\include
Проблема в том, что Qt распознает include как зарезервированное слово и не распознает заголовочные файлы в этой папке. Когда я переименовываю папку в Include или include2-все работает хорошо, файлы этой папки успешно импортируются.
Я не хочу менять имя папки, потому что каждый другой пользователь, который захочет скомпилировать мое приложение, тоже должен будет это сделать. Может ли кто-нибудь предложить мне другое решение?
Спасибо!
c++
qt
qmake
Поделиться
Источник
RRR
23 октября 2013 в 16:47
3 ответа
- Правильное (древовидное) отображение проекта Qt с использованием . pro и .pri в QtCreator
Можно ли отобразить более одного дополнительного уровня с помощью project include files (. pri). Например, если файл .pro включает в себя файл .pri , который включает в себя два файла .pri . .pro .pri .pri .pri В QtCreator (проекты) отображение вводит в заблуждение: .pro .pri .pri .pri Он просто…
- Qt MySQL ——— не удается открыть включаемый файл: ‘mysql.h’:
Я делаю приложение GUI в Qt, оно будет в основном передним концом базы данных однако я еще даже не дошел до того, чтобы что-то делать, потому что мое соединение с базой данных просто продолжает терпеть неудачу (ну, на самом деле оно не компилируется, так что это не проблема с подключением DB) Во…
2
Была такая же проблема.
Просто добавьте $$quote
и поместите путь в фигурные скобки.
Например:
$$quote(C:\\Program Files (x86)\\Microsoft Visual Studio 10. 0\\VC\\include)
Поделиться
sara
25 ноября 2013 в 09:56
0
использовать
INCPATH = -I/<path>/include
или явно указывать каждый файл
HEADERS = include/menuinterface.h \
include/editormenuinterface.h \
include/schematicmenuint
...
Поделиться
Vishnu Kanwar
23 октября 2013 в 16:53
0
Попробуйте использовать /
в качестве символа разделителя:
INCLUDEPATH += "<path>/include"
Поделиться
Tishka17
24 октября 2013 в 06:00
- Как включить OpenCL в проект Qt Creator?
Я думаю, что это простая проблема, но я не могу понять ее. В Visual Studio вы добавляете каталог include, каталог библиотеки и зависимость (OpenCL.lib) через диалоговое окно свойств проекта. Но в Qt Creator он позволяет добавить внешнюю библиотеку, но не помогает настроить заголовочные файлы, и…
- Qt: включать .pri пользоваться библиотекой — ошибочные включает
Я пытаюсь использовать QtSerialPort ( http://qt-project.org/wiki/QtSerialPort ) с Qt 4.8. Он не входит в эту версию, поэтому мне приходится устанавливать его вручную. Чтобы не устанавливать его вручную, я просто хотел включить файл .pri, который поставляется вместе с QtSerialPort. Я получил свою…
Похожие вопросы:
< ! — #include file = «file.js»> не работает
У меня есть какой-то устаревший код html, который использует #include file = filename.js derective для загрузки файлов .js на страницу html. Проблема в том, что файлы не загружаются. Когда я пробую. ..
Ant dirset, который включает в себя корневой каталог
Как я могу определить dirset в Ant, который включает в себя два каталога: базовый каталог проекта и подкаталог test? Похоже, что вы не можете специально включить корневой каталог dirset, используя…
Мультиплатформенность включает в себя передовую практику (qt)
я новичок в этом деле, не могли бы вы дать мне несколько советов ? Поэтому я хочу сделать простое мультиплатформенное приложение с SDL и qt. Проблема: on windows_ #include <SDL2/SDL_main.h> on…
Правильное (древовидное) отображение проекта Qt с использованием .pro и .pri в QtCreator
Можно ли отобразить более одного дополнительного уровня с помощью project include files (. pri). Например, если файл .pro включает в себя файл .pri , который включает в себя два файла .pri . .pro…
Qt MySQL ——— не удается открыть включаемый файл: ‘mysql.h’:
Я делаю приложение GUI в Qt, оно будет в основном передним концом базы данных однако я еще даже не дошел до того, чтобы что-то делать, потому что мое соединение с базой данных просто продолжает. ..
Как включить OpenCL в проект Qt Creator?
Я думаю, что это простая проблема, но я не могу понять ее. В Visual Studio вы добавляете каталог include, каталог библиотеки и зависимость (OpenCL.lib) через диалоговое окно свойств проекта. Но в Qt…
Qt: включать .pri пользоваться библиотекой — ошибочные включает
Я пытаюсь использовать QtSerialPort ( http://qt-project.org/wiki/QtSerialPort ) с Qt 4.8. Он не входит в эту версию, поэтому мне приходится устанавливать его вручную. Чтобы не устанавливать его…
Не удается добавить существующий каталог в QT Creator
Я пытаюсь открыть некоторые файлы в QT Creator, имена файлов VertexShader.vert и FragmentShader.frag оба файла находятся в моем каталоге проектов, но когда я пытаюсь открыть их, я должен сделать…
Qt неопределенные ссылки на источники включают
У меня есть некоторые проблемы с окружающей средой Qt. Я хочу использовать только среду Qt для консольного приложения, я пишу код на C++, но **I должен использовать кросс-компилятор. **Of конечно, я…
Невозможно добавить include path в Qt Creator
Я скачал проект C++, который использует Boost. Это довольно сложно, и множество файлов ссылаются на его части, например: #include <boost/graph/fruchterman_reingold.hpp> Я поместил каталог…
Qt 4.1: Проектные Файлы qmake
Qt 4.1: Проектные Файлы qmake
[Предыдущая: Использование qmake]
[Содержание]
[Следующая: Запуск qmake]
Проектные файлы содержат всю неоходимую информацию для построения qmake Вашего приложения, библиотеки или плагина. Ресурсы, используемые Вашим проектом, определяются с помощью набора деклараций, но поддержка упрощенного программирования, позволяет Вам описать различные процессы построики для различных платформ и окружений.
Элементы Проектного Файла
Формат проектного файла, используемый qmake, может применяться и для создания простых приложений, и для создания сложных систем. Файлы простых проектов могут использовать стиль прямых деклараций, определяя стандартные переменные для указания ресурсов и заголовочных файлов используемых в проекте. Сложные проекты могут использовать структуры потоков управления для точной настройки процесса построения.
Следующие секции описывают различные типы элементов используемых в проектных файлов.
Переменные
В проектном файле переменные используются для хранения списков строк. В простейших проектах эти переменные сообщают qmake о настройках конфигурации, имен файлов и путей, используемых для процесса постройки.
qmake просматривает определенные переменные в каждом проектном файле и использует их содержимое для определения того, что следует записать в Make-файле. Например, списки значений в переменных HEADERS и SOURCES используется для указания qmake о заголовочных файлах и файлах ресурсов, находящихся в той же директории, что и проектный файл.
Переменные могут также иметь внутреннее использование для хранения временных списков значений, а существующие списки значений могут быть перезаписаны или дополнены новыми значениями.
В следующих строках показано, как списки значений заносятся в переменные:
HEADERS = mainwindow.h paintwidget.h
Обратите внимание, что первое присваивание включает только значения, определенные в той же строке как переменная HEADERS. В следующем присваивании записи размещаются в нескольких строках используя символ \ для объединения строк.
Список значений, содержащийся в переменной, расширяется следующим образом:
SOURCES = main.cpp mainwindow.cpp \ paintwidget.h CONFIG += qt
Переменная CONFIG — это специальная переменная, используемая qmake для генерирования Make-файла. Она обсуждается в секции о конфигурировании, расположенной ниже в этой главе. В вышеприведенной строке QT добавляется к списку существующих значений, содержащихся в CONFIG.
В следующем списке приведены переменные, которые qmake распознает и описание информацию, которую они должны содержать.
Переменная | Содержимое |
---|---|
CONFIG | Настройки общей конфигурации проекта. |
DESTDIR | Директория, в которую будет помещен исполняемый или двоичный файл. |
FORMS | Список файлов форм (.ui), обрабатываемых uic. |
HEADERS | Список имен заголовочных файлов (.h), используемых для постройки проекта. |
QT | Qt-специфичные настройки конфигурации. |
RESOURCES | Список файлов ресурсов (.rc), которые должны быть включены в проект. Для получения более подробной информации об этих файлах см. Система Ресурсов Qt. |
SOURCES | Список файлов реализации, используемых для постройки проекта. |
TEMPLATE | Шаблон, используемый для постройки проекта. Определяет, будет ли построенный проект приложением, библиотекой или плагином. |
Содержимое переменной может быть прочитано с помощью имени переменной, предваряемого $$. Это можно использовать для присвоения значения одной переменной другой:
TEMP_SOURCES = $$SOURCES
Оператор $$ интенсивно используется встраиваемыми функциями, работающими со строками и списками значений. Они описаны в главе Профессиональное Использование qmake.
Обычно, переменные используются для хранения списка значений, разделенных пробелами. Однако, иногда требуется определить значения, содержащие пробелы. Это нужно делать следующим способом:
DEST = "Program Files"
С текстом, заключенным в кавычки, обращаются как с одним значением, хранящимся в списке, содержащимся в переменной.
Комментарии
Вы можете добавлять комментарии в проектный файл. Комментарии начинаются с символа # и продолжаются до конца строки. Например:
# Обычно комментарии начинаются с начала строки, но они # также могут следовать и за строкой с инструкцией проектного файла.
Если необходимо в значение какой-либо переменной включить символ #, используют внутреннюю переменную LITERAL_HASH. Для получения более подробной информации, см. описание переменных.
Встроенные Функции и Поток Управления
qmake предоставляет несколько встроенных функций для обработки содежимого переменных. Наиболее часто используемая функция в простых проектных файлах — это функция include, которая принимает в качестве параметра имя файла. Содржимое этого файла вставляется в проектный файл в том месте, где располагается функция include. Функция include обычно используется для включения других проектных файлов в данный проектный файл:
include(other.pro)
Поддержка условных структур сделана возможной с помощью инструкции scopes, которые ведут себя подобно условиям if в языках программирования:
win32 { SOURCES += paintwidget_win.cpp }
Инструкции внутри выполняются только в случае, если выражение условия возвращает true. В данном случае должна быть установлена специальная переменная win32; это автоматически делается в Windows, а в других системах это можно сделать запустив qmake с опцией командной строки -win32 (для получения более подробной информации см. Запуск qmake).
Простые циклы для перебора значений списков создаются с использованием встроенной функции for. Следующий код добавляет директории в переменную SUBDIRS, но только если такие директории существуют:
EXTRAS = handlers tests docs for(dir, EXTRAS) { exists($$dir) { SUBDIRS += $$dir } }
Более сложные операции, обычно требующие циклов, над переменными реализованы с помощью встроенных функций, таких как find, unique и count. Эти и многие другие функции обеспечивают управление строками и путями, поддерживают пользовательский ввод и вызов внешних инструментов. Список доступных функций может быть найден в главе Профессиональное Использование qmake данного руководства.
Шаблоны Проекта
Переменная TEMPLATE используется для определения типа проекта, который должен быть построен. Если тип проекта не определен, qmake считает, что должно быть построено приложение и генерирует соответствующий Make-файл (или эквивалентный файл).
В следующей таблицы представлены возможные типы проектов и информация о файлах, которые qmake генерирует для каждого из них:
Template | Описание продукцииqmake |
---|---|
app (по умолчанию) | Создается Make-файл для постройки приложения. |
lib | Создается Make-файл для постройки библиотеки. |
subdirs | Создается Make-файл, который попадет во все указанные директории и запустит qmake для всех найденных проектных файлов. |
vcapp | Создается проектный файл Visual Studio для постройки проекта. |
vclib | Создается проектный файл Visual Studio для постройки библиотеки. |
Для получения советов относительно написания проектных файлов для проектов, использующих шаблоны app и lib см. qmake Tutorial for advice on writing project files for projects that use the app and lib templates.
При использовании шаблона subdirs, qmake генерирует Make-файл для просмотра каждой заданной поддиректории, обрабатывает любой, найденный там проектный файл и запускает платформеннозависимый инструмент make для недавно созданного Make-файла.
Единственная переменная, предназначена для данного шаблона — это переменная SUBDIRS. Эта переменная содержит список всех поддиректорий, содержащих обрабатываетмые проектные файлы. Важно, чтобы проектный файл в каждой поддиректории, чтобы qmake мог его найти, имел то-же имя, что и поддиректория. Например, если поддиректория называется myapp, то проектный файл, находящийся в этой директории, должен называться myapp. pro.
Общее Конфигурирование
Переменная CONFIG определяет опции и особенности работы компилятора, а также связываемые библиотеки. В переменную CONFIG может быть добавлено что угодно, но опции, перечисленные ниже распознаются qmake.
Следующие опции управляют флагами, используемые при постройке проекта:
Опция | Описание |
---|---|
release | Проект строится в режиме полноценного окончательного варианта. Игнорируется, если также определена опция debug. |
debug | Проект строится в режиме отладки. |
warn_on | Компилятор должен вывести, насколько возможно, много сообщений. Игнорируется, если также определена опция warn_off. |
warn_off | Компилятор должен вывести, насколько возможно, мало сообщений. |
Обратите внимание, что любая из опций, задаваемых в переменной CONFIG может также использоваться в качестве условий в проектном файле. Это позволяет задавать различные конфигурации для постройки release и debug, и подробно описано в разделе Scopes главы Профессиональное Использование данного руководства.
Вы можете проверять присутствие определенных опций используя встроенную функцию CONFIG(). Например, следующий код демонстрирует использование этой функции в качестве условия проверки присутствия опции debug:
CONFIG(debug, debug|release) { message(Building in debug mode.) } else { message(Building in release mode. Ignoring debug if it is available.) }
Следующие опции определяют тип проекта, который будет построен. Обратите внимание, что некоторые из этих опций вступают в силу только на соответствующей платформе. На других платформах эти опции не оказывают влияние на постройку проекта.
Опция | Описание |
---|---|
qt | Проект является приложением Qt и должен быть связан с библиотеками Qt. Вы можете использовать переменную QT для управления дополнительными модулями Qt, которые могут потребоваться приложению. |
thread | Проект является многопоточным приложением. |
x11 | Проект является приложением или библиотекой X11. |
При использовании шаблонов проекта приложения или библиотеки, могут быть использованы узкоспециализированные опции конфигурирования для более точного управления процессом постройки. Они деталько описаны в главе Обычные проекты данного руководства.
Например, если Ваше приложение использует библиотеку Qt и Вы хотите построить многопоточное приложение в режиме debug, то Ваши проектный файл будет содержать следующую строку:
CONFIG += qt thread debug
Обратите внимание, что следует использовать «+=», not «=». В противном случае qmake не сможет использовать конфигурацию Qt для опций, необходимых для Вашего проекта.
Декларация Библиотек Qt
Если вы, в переменной CONFIG, позволяете поддержку qmake Qt, то дальше становится возможным определить, какие из библиотек Qt будут связаны в Вашим приложением. Это может быть сделано с помощью переменной QT, которая может быть использована для декларации модулей расширения. Например, Вы можете включить в приложение модули XML и сети следующим способом:
CONFIG += qt QT += network xml
Обратите внимание, что переменная QT по умолчанию включает модули ядра и GUI, так что вышеприведенная декларация добавляет модули сети и XML к списку модулей по умолчанию. Следующее присваивание удаляет модули по умолчанию и приведет к ошибкам при компиляции исходного кода:
QT = network xml # This will omit the core and GUI modules.
Если Вы хотите построить приложение без модуля GUI, то Вы должны исключить его с помощью оператора «-=». По умолчанию, QT включает и core и gui, следующая строка приведет к созданию минимального проекта Qt:
QT -= gui # Используется только модуль ядра.
В нижеприведенной таблице показываются опции, которые могут использоваться в переменной QT и особенности, связанные с каждой из них:
Опция | Особенности |
---|---|
core (включается по умолчанию) | модуль QtCore |
gui (включается по умолчанию) | модуль QtGui |
network | модуль QtNetwork |
opengl | модуль QtOpenGL |
sql | модуль QtSql |
svg | модуль QtSvg |
xml | модуль QtXml |
qt3support | модуль Qt3Support |
Особенности Конфигурирования
qmake может быть настроен на дополнительные особенности конфигурирования, заданные в особых (. prf) файлах. Эти дополнительные возможности часто предоставляют поддержку для пользовательских инструментов, используемых в течение процесса постройки. Для добавления особого действия в процесс постройки, добавьте ее имя (имя файла без расширения) в переменную CONFIG.
Например, с помощью следующих строк можно настроить процесс постройки qmake так, чтобы воспользоваться преимуществами внешних библиотек, поддерживаемых pkg-config, таких как библиотеки D-BUS и ogg:
CONFIG += link_pkgconfig PKGCONFIG += ogg dbus-1
Более подробная информация об особенностях конфигурирования может быть найдена в разделе Добавление Новых Особенностей Конфигурации главы Профессиональное Использование qmake.
[Предыдущая: Использование qmake]
[Содержание]
[Следующая: Запуск qmake]
Сборка подпроектов в Qt с помощью SUBDIRS
Внимание! Эта статья от 2013 года. В настоящий момент в Qt работают «подключаемые» подпроекты *. pri. Однако по ним, кроме сухой документации, информации мало.
Сборка группы проектов в qmake с помощью SUBDIRS
Представьте себе программу, имеющую плагинную архитектуру. Qt Creator тому хороший пример. Исходники таких программ должны состоять из нескольких отдельно компилируемых проектов: собственно программы и динамических библиотек плагинов. Прибавьте к этому тест-кейсы, и вполне можем получить пару десятков взаимосвязанных проектов.
Конечно, можно компилировать их по отдельности, но это неправильно. И дело здесь не только в том, что нужно нажать 5-10-20 раз на кнопку «build» вместо одного. Проекты может быть нужно строить в определенном порядке, да и банально можно пропустить какой проект. Ошибки в билде никому не нужны.
Поэтому, например, в Visual Studio для автоматизации построения группы проектов ввели понятие solution (решение), которое может содержать в себе проекты. Аналогом этого механизма в qmake является переменная SUBDIRS.
Базовый функционал SUBDIRS
Все проекты, составляющие программу, должны быть в своих подкаталогах каталога программы. В этом каталоге нужно создать .pro файл специального вида:
# проект типа subdirs
TEMPLATE = subdirs
# список каталогов проектов
# в каждом каталоге должен существовать
# одноименный .pro файл: prj1/prj1.pro, prj2/prg2.pro и т.п.
SUBDIRS = prj1 prj2 prj3
# Кроме этих двух переменных толком больше писать смысла нет.
# Разве что QMAKE_EXTRA_TARGETS, о чем ниже.
Вид subdirs проекта в Qt Creator
qmake при обработке этого файла обработает — независимо друг от друга, но с одними и теми же настройками qmake — дочерние проекты в подкаталогах, после чего в каталоге программы создаст Makefile, который будет вызывать make для дочерних проектов. К примеру, make all в корневом каталоге вызовет make all во всех дочерних каталогах.
Qt Creator отлично поддерживает проекты типа subdirs. В интерфейсе Projects все наглядно отображается, можно добавлять новые проекты в контекстном меню subdirs-проекта (New Subproject…), но самое главное — это поддержка shadow builds. Весь проект типа subdirs вместе со своими дочерними проектами билдится в один shadow каталог — с повторением структуры каталогов исходников. Очень удобно.
Структура каталогов
Если дочерние проекты хочется организовать в иерархию, можно поступить двумя способами. Во-первых, можно дочерний проект сделать subdirs проектом, все будет работать. Во-вторых, можно просто указать в переменной SUBDIRS путь к подкаталогу подкаталога, например.
SUBDIRS = prj1 prj2 prj3 dir/subdir1 dir/subdir2
Но на этом история не заканчивается. Значения, перечисленные в переменной SUBDIRS, можно использовать как имена составных переменных. Если значения содержат символы, отличные от [a-zA-Z0-9_], они заменяются на -, например для dir/subdir1 имя переменной будет dir-subdir1. Странный выбор, т.к. переменные с — в имени не везде проходят мимо парсера без ошибки. Так что лучше вложенные пути не использовать напрямую, а задавать для них алиасы:
SUBDIRS += prj1
prj1.subdir = dir/prj1
# Фактически, это то же самое, что
# SUBDIRS += dir/prj1
# только вместо составной переменной dir-prj1
# теперь используется составная переменная prj1
Вместо переменной . subdir (не одновременно с ней) можно использовать переменную .file, которая позволяет явно указать путь к .pro файлу дочернего проекта, и в этом случае его имя не должно совпадать с именем каталога проекта.
SUBDIRS += prj1
prj1.file = dir/prj1/project.pro
Зависимости между проектами
Есть два способа задать порядок билда проектов (их, при желании, можно использовать одновременно). Первый — это указать настойку в переменной CONFIG, которая означает, что проекты должны компилироваться в том порядке, в котором они указаны в переменной SUBDIRS:
CONFIG += ordered
Второй способ — это явно указать зависимости между проектами.
SUBDIRS = prj1 prj2 prj3 prj4
# prj1 будет скомпилирован после prj2 и prj3
prj1.depends = prj2 prj3
В .depends имена проектов должны указываться в том же виде, в каком они указаны в переменной SUBDIRS.
Makefile и subdirs
Для проекта можно указать нестандартное имя для Makefile файла.
prj1.makefile = MyMakefile
При этом по неведомой мне причине стандартный файл с именем Makefile тоже формируется.
В корневом Makefile (который получается из .pro файла subdir-проекта) все дочерние проекты оформляются как набор отдельных целей. Префикс для этих целей имеет вид sub-имя_переменной_проекта. Например, для проекта prg1 цели будет иметь вид в духе sub-prg1-sub_Debug. Префикс для целей можно поменять:
# цели будут иметь вид customtarget-sub_Debug
prj1.target = customtarget
И последнее. В корневой Makefile можно добавлять свои цели с помощью рассмотренного ранее механизма QMAKE_EXTRA_TARGETS. Просто цель не представляет собой интересна, но в режиме recursive этот механизм может быть полезен.
customtarget.target = check
customtarget.CONFIG = recursive
customtarget.commands = @echo Check is completed.
QMAKE_EXTRA_TARGETS += customtarget
Чтобы это работало, в дочерних проектах должны быть определены цели check. После этого вызов make check в корневом каталоге выполнит make check для всех дочерних проектов. Можно в Qt Creator для этого отдельный конфиг настроить, например.
Небольшая автоматизация
Из всех рассмотренных расширенных фич наибольший интерес представляют собой зависимости между проектами. Для некоторого упрощения жизни я использую функцию, почти без изменений позаимствованную у одного хорошего человека:
# addSubdirs(subdirs,deps): добавляет subdirs (может быть маской) вместе с зависимостями
# пути могут быть как с прямыми, так и с обратными слэшами
defineReplace(addSubdirs) {
for(subdirs, 1) {
entries = $$files($$subdirs)
for(entry, entries) {
name = $$replace(entry, [/\\\\], _)
SUBDIRS += $$name
eval ($${name}.subdir = $$entry)
for(dep, 2):eval ($${name}.depends += $$replace(dep, [/\\\\], _))
export ($${name}.subdir)
export ($${name}.depends)
}
}
export(SUBDIRS)
return(1)
}
# добавляет все проекты из каталога dir, и делает их зависимыми от проекта lib
$$addSubdirs(dir/*, lib)
Примечание: В посте есть неточность, цитирую:
«qmake при обработке этого файла обработает – независимо друг от друга, но с одними и теми же настройками qmake – дочерние проекты в подкаталогах, после чего в каталоге программы создаст Makefile, который будет вызывать make для дочерних проектов. »
На самом деле qmake не бегает по подкаталогам, а тупо из списка SUBDIRS накидает цели в корневой Makefile и каждая цель содержит 1 команду – запуск qmake в конкретном подкаталоге. То есть pro-файлы в подкаталогах обработаются потом – во время запуска make из корневого каталога, а не во время работы “корневого” qmake. Иначе говоря, Makefile в каталоге программы будет вызывать qmake, а не make, для дочерних проектов.
По крайней мере проверено на Windows 7 x64, Qt 5.3.2, MS VC++ 2013.
Создание файлов проекта | qmake Руководство
Файлы проекта содержат всю информацию, необходимую qmake для создания вашего приложения, библиотеки или плагина. Как правило, вы используете серию объявлений для указания ресурсов в проекте, но поддержка простых программных конструкций позволяет описывать различные процессы сборки для разных платформ и сред.
Элементы файла проекта
Формат файла проекта, используемый qmake, может использоваться для поддержки как простых, так и довольно сложных систем сборки. Простые файлы проекта используют простой декларативный стиль, определяя стандартные переменные для обозначения исходных файлов и файлов заголовков, которые используются в проекте. Сложные проекты могут использовать структуры потока управления для точной настройки процесса сборки.
В следующих разделах описываются различные типы элементов, используемых в файлах проекта.
Переменные
В файле проекта переменные используются для хранения списков строк. В простейших проектах эти переменные информируют qmake об используемых параметрах конфигурации или предоставляют имена файлов и пути для использования в процессе сборки.
qmake ищет определенные переменные в каждом файле проекта и использует их содержимое для определения того, что следует записать в Makefile. Например, списки значений в переменных HEADERS и SOURCES используются, чтобы сообщить qmake о заголовочных и исходных файлах в том же каталоге, что и файл проекта.
Переменные также могут использоваться внутри для хранения временных списков значений, а существующие списки значений могут быть перезаписаны или расширены новыми значениями.
В следующем фрагменте показано, как списки значений присваиваются переменным:
ЗАГОЛОВКИ = главное окно.h paintwidget.h
Список значений переменной расширяется следующим образом:
ИСТОЧНИКИ = main.cpp mainwindow.cpp \ paintwidget.cpp КОНФИГУРАЦИЯ + = консоль
Примечание: Первое присвоение включает только значения, которые указаны в той же строке, что и переменная HEADERS
. Второе присвоение разбивает значения в переменной SOURCES
по строкам с помощью обратной косой черты (\).
Переменная CONFIG — еще одна специальная переменная, которую qmake использует при создании Makefile.Это обсуждается в Общей конфигурации. В приведенном выше фрагменте консоль
добавлена к списку существующих значений, содержащихся в CONFIG
.
В следующей таблице перечислены некоторые часто используемые переменные и описано их содержимое. Полный список переменных и их описания см. В разделе «Переменные».
Переменная | Содержание |
---|---|
КОНФИГУРАЦИЯ | Общие параметры конфигурации проекта. |
DESTDIR | Каталог, в который будет помещен исполняемый или двоичный файл. |
ФОРМЫ | Список файлов пользовательского интерфейса, которые будут обрабатываться компилятором пользовательского интерфейса (uic). |
ЗАГОЛОВКИ | Список имён файлов заголовков (.h), используемых при построении проекта. |
QT | Список модулей Qt, используемых в проекте. |
РЕСУРСЫ | Список файлов ресурсов (.qrc), которые будут включены в окончательный проект. Дополнительную информацию об этих файлах смотрите в системе ресурсов Qt. |
ИСТОЧНИКИ | Список файлов исходного кода, которые будут использоваться при сборке проекта. |
TEMPLATE | Шаблон для использования в проекте. Это определяет, будет ли результатом процесса сборки приложение, библиотека или плагин. |
Содержимое переменной можно прочитать, добавив к имени переменной $$
. Это можно использовать для присвоения содержимого одной переменной другой:
Оператор $$
широко используется со встроенными функциями, которые работают со строками и списками значений.Для получения дополнительной информации см. Qmake Language.
Пробел
Обычно при присвоении переменных значения разделяются пробелами. Чтобы указать значения, содержащие пробелы, вы должны заключить значения в двойные кавычки:
Цитируемый текст рассматривается как отдельный элемент в списке значений, содержащихся в переменной. Аналогичный подход используется для работы с путями, содержащими пробелы, особенно при определении переменных INCLUDEPATH и LIBS для платформы Windows:
win32: INCLUDEPATH + = "C: / mylibs / extra headers" unix: INCLUDEPATH + = "/ home / user / extra headers"
Вы можете добавлять комментарии к файлам проекта. Комментарии начинаются с символа #
и продолжаются до конца той же строки. Например:
# Комментарии обычно начинаются в начале строки, но они # также может следовать за другим контентом в той же строке.
Чтобы включить символ #
в присвоение переменных, необходимо использовать содержимое встроенной переменной LITERAL_HASH.
Встроенные функции и поток управления
qmake предоставляет ряд встроенных функций, позволяющих обрабатывать содержимое переменных.Наиболее часто используемой функцией в простых файлах проекта является функция include (), которая принимает имя файла в качестве аргумента. Содержимое данного файла включается в файл проекта в том месте, где используется функция include
. Функция include
чаще всего используется для включения других файлов проекта:
Поддержка условных структур предоставляется через области, которые ведут себя как , если операторы
в языках программирования:
win32 { ИСТОЧНИКИ + = paintwidget_win. cpp }
Назначения внутри фигурных скобок выполняются, только если условие истинно. В этом случае должна быть установлена опция win32
CONFIG. В Windows это происходит автоматически. Открывающая скобка должна стоять на той же линии, что и условие.
Более сложные операции с переменными, которые обычно требуют циклов, предоставляются встроенными функциями, такими как find (), unique () и count (). Эти и многие другие функции предназначены для управления строками и путями, поддержки ввода данных пользователем и вызова внешних инструментов.Для получения дополнительной информации об использовании функций см. Qmake Language. Список всех функций и их описания см. В разделах «Функции замены» и «Функции тестирования».
Шаблоны проектов
Переменная TEMPLATE используется для определения типа проекта, который будет построен. Если это не объявлено в файле проекта, qmake предполагает, что приложение должно быть построено, и сгенерирует соответствующий Makefile (или эквивалентный файл) для этой цели.
В следующей таблице перечислены типы доступных проектов и описаны файлы, которые qmake будет генерировать для каждого из них:
Шаблон | Выход qmake |
---|---|
приложение (по умолчанию) | Makefile для создания приложения. |
lib | Makefile для сборки библиотеки. |
aux | Makefile, который ничего не строит. Используйте это, если не нужно вызывать компилятор для создания цели, например, потому что ваш проект написан на интерпретируемом языке. Примечание: Этот тип шаблона доступен только для генераторов на основе Makefile. В частности, он не будет работать с генераторами vcxproj и Xcode. |
подкаталоги | Makefile, содержащий правила для подкаталогов, указанных с помощью переменной SUBDIRS.Каждый подкаталог должен содержать собственный файл проекта. |
vcapp | Visual Studio Файл проекта для создания приложения. |
vclib | Файл проекта Visual Studio для создания библиотеки. |
vcsubdirs | Файл решения Visual Studio для создания проектов в подкаталогах. |
См. Раздел Создание общих типов проектов для получения советов по написанию файлов проекта для проектов, использующих шаблоны app
и lib
.
Когда используется шаблон подкаталогов
, qmake генерирует Makefile для проверки каждого указанного подкаталога, обработки любого файла проекта, который он там находит, и запуска инструмента make
платформы на вновь созданном Makefile. SUBDIRS Переменная
используется для хранения списка всех подкаталогов для обработки.
Общая конфигурация
Переменная CONFIG определяет параметры и функции, с которыми должен быть настроен проект.
Проект может быть построен в режиме выпуска , или режиме отладки , , либо в обоих режимах. Если указаны и отладка, и выпуск, вступает в силу последний. Если вы укажете опцию debug_and_release
для сборки как отладочной, так и выпускной версии проекта, Makefile, который генерирует qmake, включает правило, которое строит обе версии. Это можно вызвать следующим образом:
Добавление параметра build_all
к переменной CONFIG
делает это правило по умолчанию при построении проекта.
Примечание: Каждая из опций, указанных в переменной CONFIG
, также может использоваться в качестве условия области. Вы можете проверить наличие определенных параметров конфигурации, используя встроенную функцию CONFIG (). Например, следующие строки показывают функцию как условие в области видимости, чтобы проверить, используется ли только опция opengl
:
CONFIG (opengl) { сообщение (Сборка с поддержкой OpenGL.) } еще { сообщение (поддержка OpenGL недоступна.) }
Это позволяет определять различные конфигурации для сборок выпуска
и отладки
. Для получения дополнительной информации см. Использование областей.
Следующие параметры определяют тип строящегося проекта.
Примечание: Некоторые из этих параметров действуют только при использовании на соответствующей платформе.
Опция | Описание |
---|---|
qt | Проект является приложением Qt и должен связываться с библиотекой Qt.Вы можете использовать переменную QT для управления любыми дополнительными модулями Qt, которые требуются вашему приложению. Это значение добавляется по умолчанию, но вы можете удалить его, чтобы использовать qmake для проекта, отличного от Qt. |
x11 | Проект представляет собой приложение или библиотеку X11. Это значение не требуется, если цель использует Qt. |
Шаблоны проектов приложений и библиотек предоставляют более специализированные параметры конфигурации для точной настройки процесса сборки. Параметры подробно описаны в разделе Создание общих типов проектов.
Например, если ваше приложение использует библиотеку Qt и вы хотите построить его в режиме отладки
, файл вашего проекта будет содержать следующую строку:
Примечание: Вы должны использовать «+ =», а не «=», иначе qmake не сможет использовать конфигурацию Qt для определения настроек, необходимых для вашего проекта.
Объявление библиотек Qt
Если переменная CONFIG содержит значение qt
, qmake поддерживает приложения Qt.Это позволяет точно настроить, какие из модулей Qt используются вашим приложением. Это достигается с помощью переменной QT, которую можно использовать для объявления необходимых модулей расширения. Например, мы можем включить XML и сетевые модули следующим образом:
Примечание: QT
по умолчанию включает модули ядра
и gui
, поэтому приведенное выше объявление добавляет сетевых и XML-модулей в этот список по умолчанию. Следующее назначение пропускает модулей по умолчанию и приведет к ошибкам при компиляции исходного кода приложения:
QT = network xml # При этом будут опущены модули core и gui.
Если вы хотите собрать проект без модуля gui
, вам необходимо исключить его с помощью оператора «- =». По умолчанию QT
содержит как core
, так и gui
, поэтому следующая строка приведет к созданию минимального проекта Qt:
QT - = gui # Используется только основной модуль.
Список модулей Qt, которые вы можете добавить к переменной QT
, смотрите в QT.
Особенности конфигурации
qmake можно настроить с дополнительными функциями конфигурации, которые указаны в файле feature (.prf) файлы. Эти дополнительные функции часто обеспечивают поддержку настраиваемых инструментов, которые используются в процессе сборки. Чтобы добавить функцию в процесс сборки, добавьте имя функции (основу имени файла функции) в переменную CONFIG
.
Например, qmake может настроить процесс сборки для использования преимуществ внешних библиотек, поддерживаемых pkg-config, таких как библиотеки D-Bus и ogg, с помощью следующих строк:
КОНФИГУРАЦИЯ + = link_pkgconfig PKGCONFIG + = ogg dbus-1
Для получения дополнительной информации о добавлении функций см. Добавление новых функций конфигурации.
Объявление других библиотек
Если вы используете в своем проекте другие библиотеки в дополнение к тем, которые поставляются с Qt, вам необходимо указать их в файле проекта.
Пути, по которым qmake ищет библиотеки и конкретные библиотеки для компоновки, могут быть добавлены в список значений в переменной LIBS. Вы можете указать пути к библиотекам или использовать нотацию в стиле Unix для указания библиотек и путей.
Например, следующие строки показывают, как можно указать библиотеку:
LIBS + = -L / usr / локальный / lib -lmath
Пути, содержащие файлы заголовков, можно также указать аналогичным образом с помощью переменной INCLUDEPATH.
Например, чтобы добавить несколько путей для поиска файлов заголовков:
INCLUDEPATH = c: / msdev / include d: / stl / include
файлов проекта qmake | Qt 4.8
Файлы проекта
содержат всю информацию, необходимую qmake
для сборки вашего приложения, библиотеки или плагина. Ресурсы, используемые вашим проектом, обычно указываются с помощью серии объявлений, но поддержка простых программных конструкций позволяет вам описывать различные процессы сборки для разных платформ и сред.
Элементы файла проекта
Формат файла проекта, используемый qmake
, может использоваться для поддержки как простых, так и довольно сложных систем сборки. Простые файлы проекта будут использовать простой декларативный стиль, определяя стандартные переменные для обозначения исходных файлов и файлов заголовков, которые используются в проекте. Сложные проекты могут использовать структуры потока управления для точной настройки процесса сборки.
В следующих разделах описываются различные типы элементов, используемых в файлах проекта.
Переменные
В файле проекта переменные используются для хранения списков строк. В простейших проектах эти переменные информируют qmake
об используемых параметрах конфигурации или предоставляют имена файлов и пути для использования в процессе сборки.
qmake
ищет определенные переменные в каждом файле проекта и использует их содержимое для определения того, что следует записать в Makefile. Например, список значений в переменных HEADERS
и SOURCES
используется для сообщения qmake
о файлах заголовков и исходных файлов в том же каталоге, что и файл проекта.
Переменные также могут использоваться внутри для хранения временных списков значений, а существующие списки значений могут быть перезаписаны или расширены новыми значениями.
Следующие строки показывают, как списки значений присваиваются переменным:
ЗАГОЛОВКИ = mainwindow. h paintwidget.h
Обратите внимание, что первое присвоение включает только значения, которые указаны в той же строке, что и переменная SOURCES
. Второе присвоение разбивает элементы по строкам с помощью символа \
.
Список значений переменной расширяется следующим образом:
ИСТОЧНИКИ = main.cpp mainwindow.cpp \ paintwidget.cpp КОНФИГУРАЦИЯ + = qt
Переменная CONFIG
— это еще одна специальная переменная, которую qmake
использует при генерации Makefile. Это обсуждается в разделе, посвященном общей настройке, далее в этой главе. В приведенной выше строке qt
добавляется к списку существующих значений, содержащихся в CONFIG
.
В следующей таблице перечислены переменные, которые распознает qmake
, и описано, что они должны содержать.
Переменная | Содержание |
---|---|
КОНФИГУРАЦИЯ | Общие параметры конфигурации проекта. |
DESTDIR | Каталог, в который будет помещен исполняемый или двоичный файл. |
ФОРМЫ | Список файлов пользовательского интерфейса, которые будут обрабатываться uic . |
ЗАГОЛОВКИ | Список имён файлов заголовков (.h), используемых при построении проекта. |
QT | Параметры конфигурации, специфичные для Qt. |
РЕСУРСЫ | Список файлов ресурсов (.rc), которые будут включены в окончательный проект. Дополнительную информацию об этих файлах смотрите в системе ресурсов Qt. |
ИСТОЧНИКИ | Список файлов исходного кода, которые будут использоваться при сборке проекта. |
TEMPLATE | Шаблон для использования в проекте. Это определяет, будет ли результатом процесса сборки приложение, библиотека или плагин. |
Содержимое переменной можно прочитать, добавив к имени переменной $$
.Это можно использовать для присвоения содержимого одной переменной другой:
Оператор $$
широко используется со встроенными функциями, которые работают со строками и списками значений. Они описаны в главе о расширенном использовании qmake.
Пробел
Обычно переменные используются для хранения списков значений, разделенных пробелами. Однако иногда необходимо указать значения, содержащие пробелы. Они должны быть заключены в двойные кавычки:
Цитируемый текст рассматривается как отдельный элемент в списке значений, содержащихся в переменной.Аналогичный подход используется для работы с путями, содержащими пробелы, особенно при определении переменных INCLUDEPATH и LIBS для платформы Windows:
win32: INCLUDEPATH + = "C: / mylibs / extra headers" unix: INCLUDEPATH + = "/ home / user / extra headers"
Комментарии
Вы можете добавлять комментарии к файлам проекта. Комментарии начинаются с символа #
и продолжаются до конца той же строки. Например:
# Комментарии обычно начинаются в начале строки, но они # также может следовать за другим контентом в той же строке.
Чтобы включить символ #
в присвоение переменных, необходимо использовать содержимое встроенной переменной LITERAL_HASH
. См. Ссылку на переменную для получения дополнительной информации.
Встроенные функции и поток управления
qmake
предоставляет ряд встроенных функций, позволяющих обрабатывать содержимое переменных. Наиболее часто используемой функцией в простых файлах проекта является функция include
, которая принимает имя файла в качестве аргумента.Содержимое данного файла включается в файл проекта в том месте, где используется функция include
. Функция include
чаще всего используется для включения других файлов проекта:
Поддержка условных структур предоставляется через области, которые ведут себя как , если операторы
в языках программирования:
win32 { ИСТОЧНИКИ + = paintwidget_win. cpp }
Назначения внутри фигурных скобок выполняются, только если условие истинно.В этом случае должна быть установлена специальная переменная win32
; это происходит автоматически в Windows, но это также можно указать на других платформах, запустив qmake
с опцией командной строки -win32
(дополнительную информацию см. в разделе Запуск qmake). Открывающая скобка должна стоять на той же линии, что и условие.
Простые циклы создаются путем перебора списков значений с использованием встроенной функции для
. Следующий код добавляет каталоги в переменную SUBDIRS, но только если они существуют:
EXTRAS = обработчики, тесты, документы for (dir, EXTRAS) { существует ($$ dir) { SUBDIRS + = $$ dir } }
Более сложные операции с переменными, которые обычно требуют циклов, выполняются встроенными функциями, такими как find
, unique
и count
.Эти и многие другие функции предназначены для управления строками и путями, поддержки ввода данных пользователем и вызова внешних инструментов. Список доступных функций можно найти в главе «Расширенное использование qmake» этого руководства.
Шаблоны проектов
Переменная TEMPLATE
используется для определения типа проекта, который будет построен. Если это не объявлено в файле проекта, qmake
предполагает, что приложение должно быть построено, и сгенерирует соответствующий Makefile (или эквивалентный файл) для этой цели.
Типы доступных проектов перечислены в следующей таблице с информацией о файлах, которые qmake
сгенерирует для каждого из них:
Шаблон | Описание qmake output |
---|---|
app (по умолчанию) | Создает Makefile для сборки приложения. |
lib | Создает Makefile для сборки библиотеки. |
subdirs | Создает Makefile, содержащий правила для подкаталогов, указанных с помощью переменной SUBDIRS. Каждый подкаталог должен содержать собственный файл проекта. |
vcapp | Создает файл проекта Visual Studio для сборки приложения. |
vclib | Создает файл проекта Visual Studio для сборки библиотеки. |
vcsubdirs | Создает файл решения Visual Studio для сборки проектов в подкаталогах. |
См. Руководство по qmake для советов по написанию файлов проектов для проектов, использующих шаблоны app
и lib
.
Когда используется шаблон subdirs
, qmake
генерирует Makefile для проверки каждого указанного подкаталога, обработки любого файла проекта, который он там находит, и запуска инструмента make
платформы на вновь созданном Makefile. Переменная SUBDIRS используется для хранения списка всех подкаталогов для обработки.
Общая конфигурация
Переменная CONFIG определяет параметры и функции, которые компилятор должен использовать, а также библиотеки, с которыми необходимо выполнить компоновку. К переменной CONFIG
можно добавить что угодно, но параметры, описанные ниже, распознаются внутри qmake
.
Следующие параметры управляют флагами компилятора, которые используются для сборки проекта:
Опция | Описание |
---|---|
релиз | Проект должен быть построен в режиме релиза. Это игнорируется, если также указан debug . |
отладка | Проект должен быть построен в режиме отладки. |
debug_and_release | Проект построен в в обоих режимах отладки и выпуска . |
debug_and_release_target | Проект построен в в обоих режимах отладки и выпуска . TARGET встроен в каталоги и отладки и выпуска. |
build_all | Если указано debug_and_release , проект по умолчанию создается как в режиме отладки, так и в режиме выпуска. |
autogen_precompile_source | Автоматически создает .cpp , который включает предварительно скомпилированный файл заголовка, указанный в файле .pro. |
заказано | При использовании шаблона subdirs эта опция указывает, что перечисленные каталоги должны обрабатываться в том порядке, в котором они указаны. |
warn_on | Компилятор должен выводить как можно больше предупреждений. Это игнорируется, если указано warn_off . |
warn_off | Компилятор должен выводить как можно меньше предупреждений. |
copy_dir_files | Разрешает правилу установки также копировать каталоги, а не только файлы. |
Параметр debug_and_release
является особенным, поскольку он позволяет создавать как отладочную, так и выпускную версии проекта. В таком случае Makefile, который генерирует qmake
, включает правило, которое строит обе версии, и его можно вызвать следующим образом:
Добавление параметра build_all
к переменной CONFIG
делает это правило используемым по умолчанию при сборке проекта, и цели установки будут созданы как для отладочной, так и для выпускной сборок.
Обратите внимание, что каждая из опций, указанных в переменной CONFIG
, также может использоваться как условие области. Вы можете проверить наличие определенных параметров конфигурации, используя встроенную функцию CONFIG (). Например, следующие строки показывают функцию как условие в области видимости, чтобы проверить, используется ли только опция opengl
:
CONFIG (opengl) { сообщение (Сборка с поддержкой OpenGL.) } еще { сообщение (поддержка OpenGL недоступна.) }
Это позволяет определять различные конфигурации для сборок выпуска
и отладки
, что более подробно описано в разделе «Области действия» главы «Расширенное использование» данного руководства.
Следующие параметры определяют тип строящегося проекта. Обратите внимание, что некоторые из этих параметров действуют только при использовании на соответствующей платформе. На других платформах они не действуют.
Опция | Описание |
---|---|
qt | Проект является приложением Qt и должен связываться с библиотекой Qt.Вы можете использовать переменную QT для управления любыми дополнительными модулями Qt, которые требуются вашему приложению. |
поток | Проект является многопоточным приложением. |
x11 | Проект представляет собой приложение или библиотеку X11. |
При использовании шаблонов проектов приложений или библиотек можно использовать более специализированные параметры конфигурации для точной настройки процесса сборки. Они подробно описаны в главе «Общие проекты» данного руководства.
Например, если ваше приложение использует библиотеку Qt и вы хотите создать его как многопоточное приложение в режиме отладки
, файл вашего проекта будет содержать следующую строку:
КОНФИГУРАЦИЯ + = отладка потока qt
Обратите внимание, что вы должны использовать «+ =», а не «=», иначе qmake не сможет использовать конфигурацию Qt для определения настроек, необходимых для вашего проекта. Более подробную информацию об операторах можно найти в разделе «Операторы» главы «Расширенное использование» qmake.
Объявление библиотек Qt
Если переменная CONFIG
содержит значение qt
, qmake поддерживает приложения Qt. Это позволяет точно настроить, какие из модулей Qt используются вашим приложением. Это достигается с помощью переменной QT
, которую можно использовать для объявления необходимых модулей расширения. Например, мы можем включить XML и сетевые модули следующим образом:
КОНФИГУРАЦИЯ + = qt QT + = сеть xml
Обратите внимание, что QT
по умолчанию включает модули ядра
и gui
, поэтому приведенное выше объявление добавляет сетевых и XML-модулей в этот список по умолчанию. Следующее назначение пропускает модулей по умолчанию и приведет к ошибкам при компиляции исходного кода приложения:
QT = network xml # При этом будут опущены модули core и gui.
Если вы хотите собрать проект без модуля gui
, вам необходимо исключить его с помощью оператора «- =». По умолчанию QT
содержит как core
, так и gui
, поэтому следующая строка приведет к созданию минимального проекта Qt:
QT - = gui # Используется только основной модуль.
Дополнительную информацию об операторах можно найти в разделе «Операторы» главы «Расширенное использование qmake».
В таблице ниже показаны параметры, которые можно использовать с переменной QT
, и функции, связанные с каждой из них:
Обратите внимание, что добавление опции opengl
к переменной QT
автоматически вызывает добавление эквивалентной опции к переменной CONFIG
. Следовательно, для приложений Qt нет необходимости добавлять опцию opengl
как в CONFIG
, так и в QT
.
Особенности конфигурации
qmake
может быть настроен с дополнительными функциями конфигурации, которые указаны в файлах функций (.prf). Эти дополнительные функции часто обеспечивают поддержку настраиваемых инструментов, которые используются в процессе сборки. Чтобы добавить функцию в процесс сборки, добавьте имя функции (основу имени файла функции) в переменную CONFIG
.
Например, qmake
может настроить процесс сборки для использования преимуществ внешних библиотек, поддерживаемых pkg-config, таких как библиотеки D-Bus и ogg, с помощью следующих строк:
КОНФИГУРАЦИЯ + = link_pkgconfig PKGCONFIG + = ogg dbus-1
Дополнительную информацию о функциях можно найти в разделе «Добавление новых функций конфигурации» главы «Расширенное использование qmake».
Объявление других библиотек
Если вы используете в своем проекте другие библиотеки в дополнение к тем, которые поставляются с Qt, вам необходимо указать их в файле проекта.
Пути, по которым qmake
ищет библиотеки и конкретные библиотеки для компоновки, могут быть добавлены в список значений в переменной LIBS. Можно указать пути к самим библиотекам или при желании можно использовать знакомую нотацию в стиле Unix для указания библиотек и путей.
Например, следующие строки показывают, как можно указать библиотеку:
LIBS + = -L / usr / локальный / lib -lmath
Пути, содержащие файлы заголовков, можно также указать аналогичным образом с помощью переменной INCLUDEPATH.
Например, можно добавить несколько путей для поиска файлов заголовков:
INCLUDEPATH = c: / msdev / include d: / stl / include
10-минутное руководство по использованию qmake
10-минутное руководство по использованию qmake
[Предыдущая: Установка qmake] [На главную] [Следующая: Учебное пособие по qmake]
10-минутное руководство по использованию qmake
Создание файла проекта
qmake использует информацию, хранящуюся в файле проекта (. pro), чтобы определить, что должно быть в создаваемых make-файлах.
Базовый файл проекта содержит информацию о приложении, например, какие файлы необходимы для компиляции приложения и какие параметры конфигурации использовать.
Вот простой пример файла проекта:
ИСТОЧНИКИ = hello.cpp ЗАГОЛОВКИ = hello.h CONFIG + = qt warn_on release
Мы дадим краткое построчное объяснение, откладывая детали на более поздний срок в руководстве.
ИСТОЧНИКИ = hello.cpp
В этой строке указываются исходные файлы, реализующие приложение. В этом случае есть только один файл, hello.cpp . Большинству приложений требуется несколько файлов; эта ситуация решается путем перечисления всех файлов на одной строке, разделенных пробелом, например:
ИСТОЧНИКИ = hello.cpp main.cpp
В качестве альтернативы каждый файл может быть указан в отдельной строке, экранируя символы новой строки, например:
ИСТОЧНИКИ = привет. cpp \ main.cpp
Более подробный подход — перечислить каждый файл отдельно, например:
ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp
В этом подходе используется «+ =», а не «=», что более безопасно, потому что он всегда добавляет новый файл в существующий список, а не заменяет список.
Строка HEADERS используется для указания файлов заголовков, созданных для использования приложением, например
ЗАГОЛОВКИ + = hello.h
Для файлов заголовков можно использовать любой из подходов, используемых для перечисления исходных файлов.
Строка CONFIG используется для предоставления qmake информации о конфигурации приложения.
CONFIG + = qt warn_on release
Здесь используется «+ =», потому что мы добавляем наши параметры конфигурации к уже имеющимся. Это безопаснее, чем использование «=», которое заменяет все параметры только указанными.
Часть qt строки CONFIG сообщает qmake , что приложение создано с использованием Qt. Это означает, что qmake будет связываться с библиотеками Qt при компоновке и добавлять необходимые пути включения для компиляции.
Часть warn_on строки CONFIG сообщает qmake , что он должен установить флаги компилятора, чтобы выводились предупреждения.
Часть выпуска в строке CONFIG сообщает qmake , что приложение должно быть создано как приложение выпуска. Во время разработки программисты могут предпочесть заменить выпуск на отладочный , который обсуждается позже.
Файлы проекта представляют собой обычный текст (т. Е. Используйте редактор, например блокнот, vim или xemacs) и должны сохраняться с расширением ‘.pro ‘расширение. Имя исполняемого файла приложения будет таким же, как имя файла проекта, но с расширением, соответствующим платформе. Например, файл проекта с именем hello.pro создаст hello.exe в Windows и hello в Unix.
Создание файла сборки
Когда вы создали свой файл проекта, очень легко создать make-файл, все, что вам нужно сделать, это перейти туда, где вы создали файл проекта, и ввести:
Makefile генерируются из файлов ‘. pro ‘файлы вроде этого:
qmake -o Makefile hello.pro
Для пользователей Visual Studio qmake также может создавать файлы .dsp, например:
qmake -t vcapp -o hello.dsp hello.pro
[Предыдущая: Установка qmake] [На главную] [Следующая: Учебное пособие по qmake]
Переменные | qmake Руководство
На фундаментальное поведение qmake влияют объявления переменных, которые определяют процесс сборки каждого проекта. Некоторые из них объявляют ресурсы, такие как заголовки и исходные файлы, общие для каждой платформы.Другие используются для настройки поведения компиляторов и компоновщиков на определенных платформах.
Переменные, зависящие от платформы, следуют шаблону именования переменных, которые они расширяют или изменяют, но включают в свое имя имя соответствующей платформы. Например, makepec может использовать QMAKE_LIBS
, чтобы указать список библиотек, с которыми должен связываться каждый проект, а QMAKE_LIBS_X11
будет использоваться для расширения этого списка.
ANDROID_ABI
Примечание. Эта переменная применяется только к целевым объектам Android.
Задает целевой ABI Android. Допустимые значения: armeabi-v7a, arm64-v8a, x86, x86_64.
ANDROID_ABIS
Примечание. Эта переменная применяется только к целевым объектам Android.
Задает список целевых ABI Android. Допустимые значения: armeabi-v7a, arm64-v8a, x86, x86_64.
Вы можете указать ABI в качестве аргумента qmake:
qmake ANDROID_ABIS = "armeabi-v7a arm64-v8a"
Примечание: Эту переменную можно использовать внутри *.pro, однако, это не рекомендуется, поскольку он переопределит любые ABI, указанные в командной строке qmake
.
ANDROID_API_VERSION
Примечание. Эта переменная применяется только к целевым объектам Android.
Задает номер уровня Android API. Для получения дополнительной информации см. Номера сборки Android.
ANDROID_BUNDLED_JAR_DEPENDENCIES
Примечание: Эта переменная применяется только к модулям Android.
Это полезно при написании модуля Qt.Он определяет список предварительно связанных зависимостей, используемых модулем, в формате .jar
, например:
ANDROID_BUNDLED_JAR_DEPENDENCIES + = jar / QtAndroid.jar
ANDROID_DEPLOYMENT_DEPENDENCIES
Примечание. Эта переменная применяется только к целевым объектам Android.
По умолчанию androiddeployqt обнаружит зависимости вашего приложения. Однако, поскольку использование плагинов во время выполнения не может быть обнаружено, могут быть ложные срабатывания, поскольку ваше приложение может зависеть от любого плагина, который является потенциальной зависимостью.Если вы хотите минимизировать размер вашего APK
, можно отменить автоматическое определение с помощью этой переменной. Он должен содержать список всех файлов Qt, которые необходимо включить, с путями относительно корня установки Qt.
Примечание: Включаются только файлы Qt, указанные с помощью этой переменной. Отсутствие всех правильных файлов может привести к сбоям. Также важно убедиться, что файлы указаны в правильном порядке загрузки. Эта переменная позволяет полностью переопределить автоматическое обнаружение, поэтому, если библиотека указана перед ее зависимостями, она не сможет загрузиться на некоторых устройствах.
ANDROID_DEPLOYMENT_SETTINGS_FILE
Примечание. Эта переменная применяется только к целевым объектам Android.
Указывает путь к файлу android-deployment-settings.json
, необходимому для androiddeployqt и androidtestrunner
. Это переопределяет путь к файлу настроек, сгенерированному qmake, поэтому вы должны убедиться, что предоставили действительный файл настроек.
ANDROID_EXTRA_LIBS
Примечание. Эта переменная применяется только к целевым объектам Android.
Список внешних библиотек, которые будут скопированы в папку libs
вашего приложения и загружены при запуске. Это можно использовать, например, для включения OpenSSL в вашем приложении. Для получения дополнительной информации см. Добавление поддержки OpenSSL для Android.
Чтобы включить внешние библиотеки для нескольких ABI, где каждый ABI имеет свой собственный каталог, используйте следующее:
для (abi, ANDROID_ABIS): ANDROID_EXTRA_LIBS + = $$ PWD / $$ {abi} /library_name.so
В противном случае, если ABI включен в имя библиотеки, используйте следующее:
для (abi, ANDROID_ABIS): ANDROID_EXTRA_LIBS + = $$ PWD / имя_библиотеки _ $$ {abi}.так
ANDROID_EXTRA_PLUGINS
Примечание. Эта переменная применяется только к целевым объектам Android.
Задает путь к подключаемым модулям C ++ или ресурсам, которые ваше приложение должно объединить, но которые не могут быть доставлены через систему ресурсов, например подключаемые модули QML. С помощью этой переменной androiddeployqt будет следить за тем, чтобы все было правильно упаковано и развернуто.
ANDROID_EXTRA_PLUGINS
должен указывать на каталог, в котором созданы дополнительные подключаемые модули.Кроме того, структура каталога сборки должна соответствовать соглашению об именах, аналогичному подключаемым модулям Qt, то есть подключаемых модулей / <имя подключаемого модуля> .
Библиотеки плагинов должны иметь формат имени libplugins_
ШАБЛОН = lib CONFIG + = плагин PLUGIN_TYPE = форматы изображений DESTDIR = $$ top_builddir / plugins / myplugin TARGET = $$ qt5LibraryTarget (myplugin, "плагины / $$ PLUGIN_TYPE /")
с top_builddir, определенным в.qmake.conf как:
top_builddir = $$ shadowed ($$ PWD)
Это гарантирует, что к библиотеке подключаемых модулей применяется правильное изменение имени ( plugins / myplugin / libplugins_imageformats_myplugin_armeabi-v7a.so ).
Затем, предполагая, что дополнительный модуль формата изображения myplugin построен как $$ DESTDIR / plugins / myplugin / , следующее гарантирует, что он упакован правильно:
ANDROID_EXTRA_PLUGINS + = $$ top_builddir / плагины
ANDROID_FEATURES
Примечание: Эта переменная применяется только к модулям Android.
Определяет список функций модуля:
ANDROID_FEATURES + = android.hardware.location.gps
Для получения дополнительной информации см. Документы Android
ANDROID_LIB_DEPENDENCIES
Примечание: Эта переменная применяется только к модулям Android.
Это полезно при написании модуля Qt. Он определяет список предварительно созданных зависимостей, используемых модулем, например:
ANDROID_LIB_DEPENDENCIES + = \ плагины / libplugins_platforms_qtforandroid.так
ANDROID_MIN_SDK_VERSION
Примечание. Эта переменная применяется только к целевым объектам Android.
Задает минимальный уровень Android API для проекта. По умолчанию для этой переменной установлен уровень API 21.
ANDROID_PACKAGE_SOURCE_DIR
Примечание. Эта переменная применяется только к целевым объектам Android.
Задает путь для настраиваемого шаблона пакета Android. Шаблон пакета Android содержит:
- AndroidManifest.xml файл
- файл build.gradle и другие скрипты Gradle
- файл res / values / libs.xml
Путь, указанный в этой переменной, может содержать пользовательские классы Java в каталоге src
. По умолчанию инструмент androiddeployqt копирует шаблон приложения из пути установки Qt для Android в каталог сборки вашего проекта, а затем поверх него копирует содержимое пути, указанного в этой переменной, перезаписывая любые существующие файлы. Например, вы можете создать собственный файл AndroidManifest.xml
для вашего приложения, а затем поместите его непосредственно в каталог, указанный в этой переменной.
ANDROID_PERMISSIONS
Примечание: Эта переменная применяется только к модулям Android.
Определяет список разрешений модуля:
ANDROID_PERMISSIONS + = android.permission.ACCESS_FINE_LOCATION
Для получения дополнительной информации см. Документы Android
ANDROID_TARGET_SDK_VERSION
Примечание. Эта переменная применяется только к целевым объектам Android.
Задает целевой уровень Android API для проекта. По умолчанию для этой переменной задан уровень API 29.
ANDROID_VERSION_CODE
Примечание. Эта переменная применяется только к целевым объектам Android.
Задает номер версии приложения. Для получения дополнительной информации см. Управление версиями приложений Android.
ANDROID_VERSION_NAME
Примечание. Эта переменная применяется только к целевым объектам Android.
Задает версию приложения в виде удобочитаемой строки.Для получения дополнительной информации см. Управление версиями приложений Android.
КОНФИГУРАЦИЯ
Задает конфигурацию проекта и параметры компилятора. Значения распознаются внутри qmake и имеют особое значение.
Следующие значения CONFIG
управляют флагами компилятора и компоновщика:
Опция | Описание |
---|---|
релиз | Проект должен быть построен в режиме релиза. Если также указан debug , последний вступает в силу. |
отладка | Проект должен быть построен в режиме отладки. |
debug_and_release | Проект подготовлен для сборки в в обоих режимах отладки и выпуска . |
debug_and_release_target | Этот параметр установлен по умолчанию. Если debug_and_release также задано, сборки отладки и выпуска попадают в отдельные каталоги отладки и выпуска. |
build_all | Если указано debug_and_release , проект по умолчанию создается как в режиме отладки, так и в режиме выпуска. |
autogen_precompile_source | Автоматически создает файл .cpp , который включает предварительно скомпилированный файл заголовка, указанный в файле .pro. |
заказано | При использовании шаблона subdirs эта опция указывает, что перечисленные каталоги должны обрабатываться в том порядке, в котором они указаны.Примечание: Использование этой опции не рекомендуется. Укажите зависимости, как описано в документации по переменной SUBDIRS. |
precompile_header | Включает поддержку использования предварительно скомпилированных заголовков в проектах. |
precompile_header_c (только MSVC) | Включает поддержку использования предварительно скомпилированных заголовков для файлов C. |
warn_on | Компилятор должен выводить как можно больше предупреждений. Если также указано warn_off , действует последний. |
warn_off | Компилятор должен выводить как можно меньше предупреждений. |
исключения | Поддержка исключений включена. По умолчанию. |
exceptions_off | Поддержка исключений отключена. |
ltcg | Генерация временного кода соединения включена. По умолчанию этот параметр отключен. |
rtti | Поддержка RTTI включена. По умолчанию используется компилятор по умолчанию. |
rtti_off | Поддержка RTTI отключена. По умолчанию используется компилятор по умолчанию. |
stl | Поддержка STL включена. По умолчанию используется компилятор по умолчанию. |
stl_off | Поддержка STL отключена. По умолчанию используется компилятор по умолчанию. |
поток | Поддержка потоков включена. Это включено, если CONFIG включает qt , что является значением по умолчанию. |
utf8_source | Указывает, что исходные файлы проекта используют кодировку UTF-8. По умолчанию используется компилятор по умолчанию. |
hide_symbols | Установить скрытую видимость символов в двоичном файле по умолчанию. По умолчанию используется компилятор по умолчанию. |
c99 | Поддержка C99 включена. Этот параметр не действует, если компилятор не поддерживает C99 или не может выбрать стандарт C. По умолчанию используется компилятор по умолчанию. |
c11 | Поддержка C11 включена. Этот параметр не действует, если компилятор не поддерживает C11 или не может выбрать стандарт C.По умолчанию используется компилятор по умолчанию. |
strict_c | Отключает поддержку расширений компилятора C. По умолчанию они включены. |
c ++ 11 | Поддержка C ++ 11 включена. Этот параметр не действует, если компилятор не поддерживает C ++ 11 или не может выбрать стандарт C ++. По умолчанию поддержка включена. |
c ++ 14 | Поддержка C ++ 14 включена. Этот параметр не действует, если компилятор не поддерживает C ++ 14 или не может выбрать стандарт C ++. По умолчанию используется компилятор по умолчанию. |
c ++ 1z | Поддержка C ++ 17 включена. Этот параметр не действует, если компилятор не поддерживает C ++ 17 или не может выбрать стандарт C ++. По умолчанию поддержка отключена. |
c ++ 17 | То же, что и c ++ 1z. |
c ++ 2a | Поддержка C ++ 2a включена. Этот параметр не действует, если компилятор не поддерживает C ++ 2a или не может выбрать стандарт C ++. По умолчанию поддержка отключена. |
c ++ latest | Включена поддержка последнего стандарта языка C ++, который поддерживается компилятором. По умолчанию эта опция отключена. |
strict_c ++ | Отключает поддержку расширений компилятора C ++. По умолчанию они включены. |
depends_includepath | Добавление значения INCLUDEPATH к DEPENDPATH включено. По умолчанию. |
lrelease | Запустите lrelease для всех файлов, перечисленных в TRANSLATIONS и EXTRA_TRANSLATIONS.Если embed_translations не задано, установите сгенерированные файлы .qm в QM_FILES_INSTALL_PATH. Используйте QMAKE_LRELEASE_FLAGS, чтобы добавить параметры к вызову lrelease. По умолчанию не установлено. |
embed_translations | Вставьте сгенерированные переводы из lrelease в исполняемый файл под QM_FILES_RESOURCE_PREFIX. Также требуется установка lrelease . По умолчанию не установлено. |
create_libtool | Создайте libtool.la для созданной в настоящее время библиотеки. |
create_pc | Создайте файл pkg-config .pc для текущей собранной библиотеки. |
no_batch | Только NMake: отключение генерации пакетных правил NMake или правил вывода. |
skip_target_version_ext | Отключить автоматический номер версии, добавляемый к имени файла DLL в Windows. |
suppress_vcproj_warnings | Подавить предупреждения генератора проектов VS. |
windeployqt | Автоматически вызывать windeployqt после связывания и добавлять выходные данные как элементы развертывания. |
dont_recurse | Подавить рекурсию qmake для текущего подпроекта. |
no_include_pwd | Не добавлять текущий каталог в INCLUDEPATHS. |
Когда вы используете опцию debug_and_release
(которая используется по умолчанию в Windows), проект будет обработан три раза: один раз для создания «мета» Makefile и еще два раза для создания Makefile.Отладка и Makefile.
Во время последних проходов build_pass
и соответствующая опция debug
или release
добавляются к CONFIG
. Это позволяет выполнять задачи, специфичные для сборки. Например:
build_pass: CONFIG (отладка, отладка | выпуск) { unix: TARGET = $$ join (TARGET ,,, _ отладка) иначе: TARGET = $$ join (TARGET ,,, d) }
В качестве альтернативы ручному написанию условных операторов типа сборки некоторые переменные предлагают варианты, специфичные для сборки, например QMAKE_LFLAGS_RELEASE в дополнение к общему QMAKE_LFLAGS.Их следует использовать, когда они доступны.
Мета-файл Makefile делает под-сборки вызываемыми через цели debug
и release
, а также комбинированную сборку через цель all
. Когда используется опция build_all
CONFIG
, по умолчанию используется комбинированная сборка. В противном случае последняя указанная опция CONFIG
из набора ( debug
, release
) определяет значение по умолчанию. В этом случае вы можете явно вызвать цель all
для создания обеих конфигураций одновременно:
Примечание: Детали немного отличаются при создании проектов Visual Studio и Xcode.
При компоновке библиотеки qmake полагается на базовую платформу, чтобы знать, с какими другими библиотеками связана эта библиотека. Однако при статической компоновке qmake не получит эту информацию, если мы не воспользуемся следующими параметрами CONFIG
:
Опция | Описание |
---|---|
create_prl | Эта опция позволяет qmake отслеживать эти зависимости. Когда эта опция включена, qmake создаст файл с расширением .prl , который сохранит метаинформацию о библиотеке (дополнительную информацию см. в разделе «Зависимости библиотеки»). |
link_prl | Когда эта опция включена, qmake обработает все библиотеки, связанные с приложением, и найдет их метаинформацию (дополнительную информацию см. В разделе «Зависимости библиотек»). |
no_install_prl | Этот параметр отключает создание правил установки для сгенерированных файлов . prl. |
Примечание: Параметр create_prl
требуется, когда строит статическую библиотеку, а link_prl
требуется, когда использует статическую библиотеку.
Следующие параметры определяют тип приложения или библиотеки:
Опция | Описание |
---|---|
qt | Целевым объектом является приложение или библиотека Qt, для которого требуется библиотека Qt и файлы заголовков. Правильные пути включения и библиотеки для библиотеки Qt будут автоматически добавлены в проект. Это определено по умолчанию, и его можно точно настроить с помощью переменной \ l {#qt} {QT} . |
x11 | Целевой объект — приложение или библиотека X11.Правильные пути включения и библиотеки будут автоматически добавлены в проект. |
testcase | Цель — автоматизированный тест. Цель проверки будет добавлена в созданный Makefile для запуска теста. Актуально только при создании файлов Makefile. |
insignificant_test | Код выхода автоматического теста игнорируется. Уместно, только если также установлен testcase . |
windows | Целевым является оконное приложение Win32 (только приложение).Правильные пути включения, флаги компилятора и библиотеки будут автоматически добавлены в проект. |
консоль | Целевой объект — консольное приложение Win32 (только приложение). Правильные пути включения, флаги компилятора и библиотеки будут автоматически добавлены в проект. Рассмотрите возможность использования опции cmdline для кроссплатформенных приложений. |
cmdline | Целевой объект — кроссплатформенное приложение командной строки. В Windows это означает CONFIG + = console .В macOS это означает CONFIG - = app_bundle . |
общий | Целевой объект — общий объект / DLL. Правильные пути включения, флаги компилятора и библиотеки будут автоматически добавлены в проект. Обратите внимание, что dll также можно использовать на всех платформах; будет создан файл общей библиотеки с соответствующим суффиксом для целевой платформы (.dll или .so). |
dll | |
статическая | Целью является статическая библиотека (только lib).Соответствующие флаги компилятора будут автоматически добавлены в проект. |
staticlib | |
plugin | Целью является подключаемый модуль (только lib). Это также включает dll. |
дизайнер | Цель — плагин для Qt Designer . |
no_lflags_merge | Гарантирует, что список библиотек, хранящийся в переменной LIBS , не сокращается до списка уникальных значений перед его использованием. |
метатипы | Создайте файл для текущего проекта. <имя> — это базовое имя TARGET, состоящее только из строчных букв. |
qmltypes | Автоматическая регистрация типов QML, определенных в C ++. Для получения дополнительной информации см. Определение типов QML из C ++. Также создайте файл .qmltypes для текущего проекта. <шаблон> будет плагинов (множественное число, по историческим причинам), если установлен плагин , или значение TEMPLATE в противном случае. qmltypes подразумевает метатипов . |
Эти параметры определяют определенные функции только в Windows:
Опция | Описание |
---|---|
плоский | При использовании шаблона vcapp все исходные файлы будут помещены в исходную группу, а файлы заголовков — в группу заголовков независимо от того, в каком каталоге они находятся. опция off сгруппирует файлы в группе source / header в зависимости от каталога, в котором они находятся.По умолчанию это включено. |
embed_manifest_dll | Встраивает файл манифеста в библиотеку DLL, созданную как часть проекта библиотеки. |
embed_manifest_exe | Встраивает файл манифеста в EXE, созданный как часть проекта приложения. |
См. Примечания к платформе для получения дополнительной информации о вариантах встраивания файлов манифеста.
Следующие параметры действуют только в macOS:
Опция | Описание |
---|---|
app_bundle | Помещает исполняемый файл в пакет (по умолчанию). |
lib_bundle | Помещает библиотеку в пакет библиотек. |
plugin_bundle | Помещает плагин в набор плагинов. Это значение не поддерживается генератором проекта Xcode. |
На процесс сборки пакетов также влияет содержимое переменной QMAKE_BUNDLE_DATA.
Следующие параметры действуют только на платформах Linux / Unix:
Опция | Описание |
---|---|
большой файл | Включает поддержку больших файлов. |
own_debug_info | Помещает отладочную информацию для библиотек в отдельные файлы. |
Переменная CONFIG
также будет проверяться при разрешении областей. Вы можете присвоить этой переменной что угодно.
Например:
CONFIG + = новости консоли ... Новый вещи { ИСТОЧНИКИ + = new.cpp ЗАГОЛОВКИ + = new.h }
ОПРЕДЕЛЕНИЕ
qmake добавляет значения этой переменной как макросы препроцессора C компилятора (опция -D).
Например:
DEFINES_DEBUG
Задает определения препроцессора для конфигурации отладки. Значения этой переменной добавляются в DEFINES после загрузки проекта. Эта переменная обычно устанавливается в qmake.conf, и ее редко нужно изменять.
Эта переменная была введена в Qt 5.13.2.
DEFINES_RELEASE
Задает определения препроцессора для конфигурации выпуска. Значения этой переменной добавляются в DEFINES после загрузки проекта.Эта переменная обычно устанавливается в qmake.conf, и ее редко нужно изменять.
Примечание. Для mkspecs MSVC эта переменная по умолчанию содержит значение NDEBUG
.
Эта переменная была введена в Qt 5.13.2.
DEF_FILE
Примечание. Эта переменная используется только в Windows при использовании шаблона приложения
.
Задает файл .def
, который будет включен в проект.
DEPENDPATH
Задает список каталогов для сканирования qmake для разрешения зависимостей.Эта переменная используется, когда qmake просматривает файлы заголовков, которые вы #include
в исходный код.
DESTDIR
Указывает, куда поместить целевой файл.
Например:
Примечание: Список поддерживаемых символов может зависеть от используемого инструмента сборки. В частности, скобки не работают с - это
.
РАССТОЯНИЕ
Задает список файлов, которые будут включены в цель dist. Эта функция поддерживается только спецификациями UnixMake.
Например:
DISTFILES + = ../program.txt
DLLDESTDIR
Примечание. Эта переменная применяется только к целям Windows.
Указывает, куда копировать целевую dll.
Задает список файлов переводов (.ts), которые содержат переводы текста пользовательского интерфейса на неродные языки.
В отличие от TRANSLATIONS, файлы перевода в EXTRA_TRANSLATIONS
будут обрабатываться только lrelease, но не lupdate.
Вы можете использовать CONFIG + = lrelease для автоматической компиляции файлов во время сборки и CONFIG + = lrelease embed_translations, чтобы сделать их доступными в системе ресурсов Qt.
См. Руководство Qt Linguist для получения дополнительной информации об интернационализации (i18n) и локализации (l10n) с помощью Qt.
ФОРМЫ
Задает файлы пользовательского интерфейса (см. Руководство по Qt Designer), которые должны обрабатываться uic
перед компиляцией. Все зависимости, заголовки и исходные файлы, необходимые для создания этих файлов пользовательского интерфейса, будут автоматически добавлены в проект.
Например:
FORMS = mydialog.ui \ mywidget.ui \ myconfig.ui
GUID
Задает идентификатор GUID, установленный в файле .vcproj
. GUID обычно определяется случайным образом. Однако, если вам потребуется фиксированный идентификатор GUID, его можно установить с помощью этой переменной.
Эта переменная относится только к файлам .vcproj
; в противном случае он игнорируется.
Определяет файлы заголовков для проекта.
qmake автоматически определяет, требуется ли moc для классов в заголовках, и добавляет в проект соответствующие зависимости и файлы для создания и связывания файлов moc.
Например:
ЗАГОЛОВКИ = myclass.h \ login.h \ mainwindow.h
См. Также ИСТОЧНИКИ.
ЗНАЧОК
Эта переменная используется только в Mac OS для установки значка приложения. Дополнительную информацию см. В документации по значкам приложений.
IDLSOURCES
Эта переменная используется только в Windows для создания проекта Visual Studio для помещения указанных файлов в папку «Созданные файлы».
INCLUDEPATH
Задает каталоги #include, в которых следует искать при компиляции проекта.
Например:
INCLUDEPATH = c: / msdev / include d: / stl / include
Чтобы указать путь, содержащий пробелы, укажите путь в кавычках, используя технику, описанную в разделе Пробелы.
win32: INCLUDEPATH + = "C: / mylibs / extra headers" unix: INCLUDEPATH + = "/ home / user / extra headers"
УСТАНАВЛИВАЕТ
Задает список ресурсов, которые будут установлены при выполнении make install
или аналогичной процедуры установки. Каждый элемент в списке обычно определяется с атрибутами, которые предоставляют информацию о том, где он будет установлен.
Например, следующее определение target.path
описывает, где будет установлена цель сборки, а назначение INSTALLS
добавляет цель сборки в список существующих ресурсов для установки:
target.path + = $$ [QT_INSTALL_PLUGINS] / форматы изображений УСТАНОВКИ + = цель
INSTALLS
имеет член .CONFIG
, который может принимать несколько значений:
Значение | Описание |
---|---|
no_check_exist | Если не задано, qmake проверяет, существуют ли файлы для установки на самом деле.Если эти файлы не существуют, qmake не создает правило установки. Используйте это значение конфигурации, если вам нужно установить файлы, созданные как часть процесса сборки, например файлы HTML, созданные qdoc. |
nostrip | Если установлено, стандартная функциональность полосы Unix отключается, а отладочная информация остается в двоичном файле. |
исполняемый файл | В Unix это устанавливает флаг исполняемого файла. |
no_build | Когда вы выполняете make install , а у вас еще нет сборки проекта, проект сначала собирается, а затем устанавливается.Если вам не нужно такое поведение, установите это значение конфигурации, чтобы гарантировать, что цель сборки не добавлена как зависимость к цели установки. |
no_default_install | У проекта есть цель проекта верхнего уровня, где при выполнении make install все устанавливается. Но если у вас есть цель установки с этим заданным значением конфигурации, она не устанавливается по умолчанию. Затем вы должны явно указать make install_ . |
Для получения дополнительной информации см. Установка файлов.
Эта переменная также используется для указания, какие дополнительные файлы будут развернуты на встроенных устройствах.
JAVA_HOME
Примечание. Эта переменная полезна только для целей Android.
Задает путь установки JDK / OpenJDK, используемый для сборки проекта.
LEXIMPLS
Задает список файлов реализации Lex. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
LEXOBJECTS
Задает имена промежуточных объектных файлов Lex.Значение этой переменной обычно обрабатывается qmake и редко нуждается в изменении.
LEXSOURCES
Задает список исходных файлов Lex. Все зависимости, заголовки и исходные файлы будут автоматически добавлены в проект для создания этих файлов lex.
Например:
LIBS
Задает список библиотек, которые нужно связать с проектом. Если вы используете флаги Unix -l
(библиотека) и -L (путь к библиотеке), qmake правильно обрабатывает библиотеки в Windows (то есть передает полный путь к библиотеке компоновщику). Библиотека должна существовать, чтобы qmake мог найти каталог, в котором находится библиотека -l
.
Например:
unix: LIBS + = -L / usr / локальный / lib -lmath win32: LIBS + = c: /mylibs/math.lib
Чтобы указать путь, содержащий пробелы, укажите путь в кавычках, используя технику, описанную в разделе Пробелы.
win32: LIBS + = "C: / mylibs / extra libs / extra.lib" unix: LIBS + = "-L / home / user / extra libs" -lextra
По умолчанию список библиотек, хранящийся в LIBS
, перед использованием сокращается до списка уникальных имен.Чтобы изменить это поведение, добавьте параметр no_lflags_merge
в переменную CONFIG:
КОНФИГУРАЦИЯ + = no_lflags_merge
LIBS_PRIVATE
Определяет список библиотек, которые будут приватно связаны с проектом. Поведение этой переменной идентично LIBS, за исключением того, что проекты разделяемых библиотек, созданные для Unix, не раскрывают эти зависимости в своем интерфейсе связи.
Эффект от этого заключается в том, что если проект C зависит от библиотеки B, которая зависит от библиотеки A в частном порядке, но C также хочет использовать символы из A напрямую, он должен явно ссылаться на A.Иными словами, библиотеки, связанные частным образом, не отображаются транзитивно во время сборки.
LITERAL_HASH
Эта переменная используется всякий раз, когда в объявлении переменной требуется буквальный символ решетки ( #
), возможно, как часть имени файла или в строке, передаваемой в какое-либо внешнее приложение.
Например:
# Чтобы включить буквальный символ решетки, используйте переменную $$ LITERAL_HASH: urlPieces = http://doc.qt.io/qt-5/qtextdocument.html pageCount сообщение ($$ join (urlPieces, $$ LITERAL_HASH))
Используя LITERAL_HASH
таким образом, можно использовать символ #
для создания URL-адреса для функции message ()
для вывода на консоль.
MAKEFILE
Задает имя созданного Makefile. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
MAKEFILE_GENERATOR
Задает имя генератора Makefile для использования при генерации Makefile. Значение этой переменной обычно обрабатывается внутри qmake и редко нуждается в изменении.
MSVCPROJ_ *
Эти переменные обрабатываются внутри qmake и не должны изменяться или использоваться.
MOC_DIR
Задает каталог, в который должны быть помещены все промежуточные файлы moc.
Например:
unix: MOC_DIR = ../myproject/tmp Win32: MOC_DIR = c: / myproject / tmp
Определяет файлы заголовков Objective-C ++ для проекта.
qmake автоматически определяет, требуется ли moc для классов в заголовках, и добавляет в проект соответствующие зависимости и файлы для создания и связывания файлов moc.
Это похоже на переменную HEADERS, но позволяет скомпилировать сгенерированные файлы moc с помощью компилятора Objective-C ++.
См. Также OBJECTIVE_SOURCES.
ИСТОЧНИКИ_ОБЪЕКТА
Задает имена всех исходных файлов Objective-C / C ++ в проекте.
Эта переменная устарела, файлы Objective-C / C ++ (.m и .mm) могут быть добавлены в переменную SOURCES.
См. Также OBJECTIVE_HEADERS.
ОБЪЕКТОВ
Эта переменная автоматически заполняется из переменной SOURCES. Расширение каждого исходного файла заменяется на .o (Unix) или .obj (Win32).Вы можете добавлять объекты в список.
OBJECTS_DIR
Задает каталог, в котором должны быть размещены все промежуточные объекты.
Например:
unix: OBJECTS_DIR = ../myproject/tmp win32: OBJECTS_DIR = c: / myproject / tmp
POST_TARGETDEPS
Перечисляет библиотеки, от которых зависит цель. Некоторые серверные ВМ, такие как генераторы для файлов проектов Visual Studio и Xcode, не поддерживают эту переменную. Как правило, эта переменная поддерживается внутри этих инструментов сборки и полезна для явного перечисления зависимых статических библиотек.
Этот список помещается после всех встроенных (и $$ PRE_TARGETDEPS) зависимостей.
PRE_TARGETDEPS
Список библиотек, от которых зависит цель. Некоторые серверные ВМ, такие как генераторы для файлов проектов Visual Studio и Xcode, не поддерживают эту переменную. Как правило, эта переменная поддерживается внутри этих инструментов сборки и полезна для явного перечисления зависимых статических библиотек.
Этот список помещается перед всеми встроенными зависимостями.
Указывает файл заголовка для создания предварительно скомпилированного файла заголовка, чтобы увеличить скорость компиляции проекта.Предварительно скомпилированные заголовки в настоящее время поддерживаются только на некоторых платформах (Windows — все типы проектов MSVC, Apple — Xcode, Makefile, Unix — gcc 3.3 и выше).
PWD
Задает полный путь к каталогу, содержащему текущий анализируемый файл. Это может быть полезно для ссылки на файлы в исходном дереве при написании файлов проекта для поддержки теневых сборок.
См. Также _PRO_FILE_PWD_.
Примечание: Не пытайтесь перезаписать значение этой переменной.
OUT_PWD
Задает полный путь к каталогу, в который qmake помещает сгенерированный Makefile.
Примечание: Не пытайтесь перезаписать значение этой переменной.
QM_FILES_RESOURCE_PREFIX
Задает каталог в системе ресурсов, в котором файлы .qm
будут доступны с помощью CONFIG + = embed_translations.
Значение по умолчанию — : / i18n /
.
QM_FILES_INSTALL_PATH
Задает целевой каталог .qm
файлы, созданные с помощью CONFIG + = lrelease, будут установлены в. Не имеет никакого эффекта, если установлен CONFIG + = embed_translations.
QML_IMPORT_PATH
Эта переменная используется только Qt Creator. Подробности смотрите в Qt Creator: Использование модулей QML с подключаемыми модулями.
QMAKE
Задает имя самой программы qmake и помещается в сгенерированные файлы Makefile. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKESPEC
Системная переменная, содержащая полный путь к конфигурации qmake, которая используется при генерации файлов Makefile. Значение этой переменной вычисляется автоматически.
Примечание: Не пытайтесь перезаписать значение этой переменной.
QMAKE_AR_CMD
Примечание: Эта переменная используется только на платформах Unix.
Задает команду для выполнения при создании общей библиотеки. Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
QMAKE_BUNDLE_DATA
Примечание. Эта переменная используется только в macOS, iOS, tvOS и watchOS.
Задает данные, которые будут установлены вместе с пакетом библиотеки, и часто используется для указания набора файлов заголовков.
Например, следующие строки добавляют path / to / header_one. h
и path / to / header_two.h
в группу, содержащую информацию о заголовках, поставляемых с платформой:
ЗАГОЛОВОК_ЗАГОЛОВКИ.version = Версии FRAMEWORK_HEADERS.files = путь / к / header_one.h путь / к / header_two.h FRAMEWORK_HEADERS.path = Заголовки QMAKE_BUNDLE_DATA + = FRAMEWORK_HEADERS
Последняя строка добавляет информацию о заголовках в коллекцию ресурсов, которая будет установлена вместе с пакетом библиотеки.
Пакеты библиотеки
создаются, когда параметр lib_bundle
добавляется в переменную CONFIG.
См. Примечания к платформе для получения дополнительной информации о создании пакетов библиотеки.
QMAKE_BUNDLE_EXTENSION
Примечание. Эта переменная используется только в macOS, iOS, tvOS и watchOS.
Задает расширение, которое будет использоваться для пакетов библиотеки. Это позволяет создавать фреймворки с пользовательскими расширениями вместо стандартного расширения имени каталога . framework
.
Например, следующее определение приведет к структуре с расширением .myframework
:
QMAKE_BUNDLE_EXTENSION =.myframework
QMAKE_CC
Указывает компилятор C, который будет использоваться при построении проектов, содержащих исходный код C. Необходимо указать только имя исполняемого файла компилятора, если он находится на пути, содержащемся в переменной PATH
при обработке Makefile.
QMAKE_CFLAGS
Задает флаги компилятора C для сборки проекта. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.Флаги, относящиеся к режимам отладки и выпуска, можно настроить путем изменения переменных QMAKE_CFLAGS_DEBUG
и QMAKE_CFLAGS_RELEASE
соответственно.
QMAKE_CFLAGS_DEBUG
Задает флаги компилятора C для отладочных сборок. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_CFLAGS_RELEASE
Задает флаги компилятора C для сборок выпуска. Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
Задает флаги компилятора C для сборок выпуска, где force_debug_info
установлено в CONFIG
. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_CFLAGS_SHLIB
Примечание: Эта переменная используется только на платформах Unix.
Задает флаги компилятора для создания общей библиотеки.Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_CFLAGS_THREAD
Задает флаги компилятора для создания многопоточного приложения. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_CFLAGS_WARN_OFF
Эта переменная используется, только если установлена опция warn_off
CONFIG. Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
QMAKE_CFLAGS_WARN_ON
Эта переменная используется, только если установлена опция warn_on
CONFIG. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_CLEAN
Задает список сгенерированных файлов (например, с помощью moc и uic) и объектных файлов, которые должны быть удалены программой make clean
.
QMAKE_CXX
Указывает компилятор C ++, который будет использоваться при построении проектов, содержащих исходный код C ++.Необходимо указать только имя исполняемого файла компилятора, если он находится на пути, содержащемся в переменной PATH
при обработке Makefile.
QMAKE_CXXFLAGS
Задает флаги компилятора C ++ для сборки проекта. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять. Флаги, относящиеся к режимам отладки и выпуска, можно настроить, изменив переменные QMAKE_CXXFLAGS_DEBUG
и QMAKE_CXXFLAGS_RELEASE
соответственно.
QMAKE_CXXFLAGS_DEBUG
Задает флаги компилятора C ++ для отладочных сборок. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_CXXFLAGS_RELEASE
Задает флаги компилятора C ++ для сборок выпуска. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO
Задает флаги компилятора C ++ для сборок выпуска, где force_debug_info
установлено в CONFIG
.Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_CXXFLAGS_SHLIB
Задает флаги компилятора C ++ для создания общей библиотеки. Значение этой переменной обычно обрабатывается qmake или qmake. conf, и его редко нужно изменять.
QMAKE_CXXFLAGS_THREAD
Задает флаги компилятора C ++ для создания многопоточного приложения. Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
QMAKE_CXXFLAGS_WARN_OFF
Задает флаги компилятора C ++ для подавления предупреждений компилятора. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_CXXFLAGS_WARN_ON
Задает флаги компилятора C ++ для генерации предупреждений компилятора. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_DEVELOPMENT_TEAM
Примечание. Эта переменная используется только в macOS, iOS, tvOS и watchOS.
Идентификатор группы разработчиков, которая будет использоваться для подписи сертификатов и профилей обеспечения.
QMAKE_DISTCLEAN
Задает список файлов, которые нужно удалить с помощью программы make distclean
.
QMAKE_EXTENSION_SHLIB
Содержит расширение для разделяемых библиотек. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
Примечание: Зависящие от платформы переменные, которые изменяют расширение, имеют приоритет над содержимым этой переменной.
QMAKE_EXTENSION_STATICLIB
Содержит расширение для общих статических библиотек. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_EXT_MOC
Содержит расширение, используемое во включенных файлах moc.
См. Также Расширения файлов.
QMAKE_EXT_UI
Содержит расширение, используемое в файлах пользовательского интерфейса Qt Designer .
См. Также Расширения файлов.
QMAKE_EXT_PRL
Содержит расширение, используемое для созданных файлов PRL.
См. Также Расширения файлов, Зависимости библиотек.
QMAKE_EXT_LEX
Содержит расширение, используемое для файлов, переданных Lex.
См. Также Расширения файлов, LEXSOURCES.
QMAKE_EXT_YACC
Содержит расширение, используемое для файлов, переданных Yacc.
См. Также Расширения файлов, YACCSOURCES.
QMAKE_EXT_OBJ
Содержит расширение, используемое для созданных объектных файлов.
См. Также Расширения файлов.
QMAKE_EXT_CPP
Содержит суффиксы для файлов, которые следует интерпретировать как исходный код C ++.
См. Также Расширения файлов.
QMAKE_EXT_H
Содержит суффиксы для файлов, которые следует интерпретировать как файлы заголовков C.
См. Также Расширения файлов.
Задает список дополнительных компиляторов или препроцессоров.
См. Также Добавление компиляторов.
Задает список дополнительных целей qmake.
См. Также Добавление пользовательских целей.
QMAKE_FAILED_REQUIREMENTS
Содержит список невыполненных требований.Значение этой переменной устанавливается qmake и не может быть изменено.
См. Также requires () и REQUIRES.
QMAKE_FRAMEWORK_BUNDLE_NAME
Примечание. Эта переменная используется только в macOS, iOS, tvOS и watchOS.
В проекте фреймворка эта переменная содержит имя, которое будет использоваться для построенного фреймворка.
По умолчанию эта переменная содержит то же значение, что и переменная TARGET.
См. Создание каркасов для получения дополнительной информации о создании каркасов и библиотечных пакетов.
QMAKE_FRAMEWORK_VERSION
Примечание. Эта переменная используется только в macOS, iOS, tvOS и watchOS.
Для проектов, в которых целью сборки является платформа macOS, iOS, tvOS или watchOS, эта переменная используется для указания номера версии, которая будет применяться к создаваемой платформе.
По умолчанию эта переменная содержит то же значение, что и переменная VERSION.
См. Создание каркасов для получения дополнительной информации о создании каркасов.
QMAKE_HOST
Предоставляет информацию о хост-машине, на которой выполняется qmake. Например, вы можете получить архитектуру хост-машины из QMAKE_HOST.arch
.
Ключи | Значения |
---|---|
.arch | Архитектура хоста |
.os | ОС хоста |
.cpu_count | Количество доступных процессоров |
.name | Хост имя компьютера |
.версия | Номер версии ОС хоста |
.version_string | Строка версии ОС хоста |
win32-g ++: содержит (QMAKE_HOST.arch, x86_64): { сообщение ("Хост 64-битный") ... }
QMAKE_INCDIR
Задает список путей системных заголовков, добавляемых к INCLUDEPATH. Значение этой переменной обычно обрабатывается qmake или qmake. conf, и его редко нужно изменять.
QMAKE_INCDIR_EGL
Указывает расположение файлов заголовков EGL, которые будут добавлены в INCLUDEPATH при создании цели с поддержкой OpenGL / ES или OpenVG.Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_INCDIR_OPENGL
Задает расположение файлов заголовков OpenGL, которые должны быть добавлены в INCLUDEPATH при построении цели с поддержкой OpenGL. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
Если реализация OpenGL использует EGL (большинство систем OpenGL / ES), то может также потребоваться установка QMAKE_INCDIR_EGL.
QMAKE_INCDIR_OPENGL_ES2
Эта переменная определяет расположение файлов заголовков OpenGL, которые будут добавлены в INCLUDEPATH при построении цели с поддержкой OpenGL ES 2.
Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
Если реализация OpenGL использует EGL (большинство систем OpenGL / ES), то может также потребоваться установка QMAKE_INCDIR_EGL.
QMAKE_INCDIR_OPENVG
Определяет расположение файлов заголовков OpenVG, которые будут добавлены в INCLUDEPATH при создании цели с поддержкой OpenVG. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
Если реализация OpenVG использует EGL, может также потребоваться установить QMAKE_INCDIR_EGL.
QMAKE_INCDIR_X11
Примечание: Эта переменная используется только на платформах Unix.
Задает расположение путей к файлам заголовков X11, которые будут добавлены в INCLUDEPATH при построении целевого объекта X11. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_INFO_PLIST
Примечание. Эта переменная используется только на платформах macOS, iOS, tvOS и watchOS.
Задает имя файла списка свойств, .plist
, который вы хотите включить в пакет приложений macOS, iOS, tvOS и watchOS.
В файле .plist
вы можете определить некоторые переменные, которые qmake заменит соответствующими значениями:
Заполнители | Эффект |
---|---|
$ {PRODUCT_BUNDLE_IDENTIFIER} , @ BUNDLEIDENTIFIER @ | Расширяется до строки идентификатора пакета целевого пакета, например: com.пример.myapp . Определяется объединением значений QMAKE_TARGET_BUNDLE_PREFIX и QMAKE_BUNDLE, разделенных точкой (, ). |
$ {EXECUTABLE_NAME} , @ EXECUTABLE @ , @ LIBRARY @ | Эквивалентно значению QMAKE_APPLICATION_BUNDLE_NAME, QMAKE_PLUGIN_BUNDLE_NAME или нет QMAKE_FRAMEWORK_FRAMEWORK_FRAMEWORK_FRAMEWORK, если создается целевой_BUNDLE устанавливаются предыдущие значения. |
$ {ASSETCATALOG_COMPILER_APPICON_NAME} , @ ICON @ | Раскрывается до значения ICON. |
$ {QMAKE_PKGINFO_TYPEINFO} , @ TYPEINFO @ | Расширяется до значения QMAKE_PKGINFO_TYPEINFO. |
$ {QMAKE_FULL_VERSION} , @ FULL_VERSION @ | Заменяется на значение VERSION, выраженное тремя компонентами версии. |
$ {QMAKE_SHORT_VERSION} , @ SHORT_VERSION @ | Заменяется на значение VERSION, выраженное двумя компонентами версии. |
$ {MACOSX_DEPLOYMENT_TARGET} | Расширяется до значения QMAKE_MACOSX_DEPLOYMENT_TARGET. |
$ {IPHONEOS_DEPLOYMENT_TARGET} | Заменяется на значение QMAKE_IPHONEOS_DEPLOYMENT_TARGET. |
$ {TVOS_DEPLOYMENT_TARGET} | Заменяется на значение QMAKE_TVOS_DEPLOYMENT_TARGET. |
$ {WATCHOS_DEPLOYMENT_TARGET} | Заменяется на значение QMAKE_WATCHOS_DEPLOYMENT_TARGET. |
Примечание: При использовании генератора Xcode указанные выше заполнители в стиле $ {var}
заменяются непосредственно системой сборки Xcode и не обрабатываются qmake. Заполнители стиля @ var @
работают только с генераторами Makefile qmake, но не с генератором Xcode.
Если сборка для iOS и файл .plist
содержит ключ NSPhotoLibraryUsageDescription
, qmake будет включать в сборку дополнительный подключаемый модуль, который добавляет поддержку доступа к фотографиям (к, e.g., QFile / QFileDialog). См. Документацию Info.plist от Apple для получения дополнительной информации об этом ключе.
Примечание: В большинстве случаев достаточно использовать Info.plist
по умолчанию.
QMAKE_IOS_DEPLOYMENT_TARGET
Примечание: Эта переменная используется только на платформе iOS.
Указывает аппаратную минимальную версию iOS, которую поддерживает приложение.
Для получения дополнительной информации см. Выражение поддерживаемых версий iOS.
QMAKE_LFLAGS
Задает общий набор флагов, которые передаются компоновщику.Если вам нужно изменить флаги, используемые для конкретной платформы или типа проекта, используйте для этой цели одну из специализированных переменных вместо этой переменной.
QMAKE_LFLAGS_CONSOLE
Примечание: Эта переменная используется только в Windows.
Задает флаги компоновщика для построения консольных программ. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LFLAGS_DEBUG
Задает флаги компоновщика для отладочных сборок.Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LFLAGS_PLUGIN
Задает флаги компоновщика для создания подключаемых модулей. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LFLAGS_RPATH
Примечание: Эта переменная используется только на платформах Unix.
Задает флаги компоновщика, необходимые для использования значений из QMAKE_RPATHDIR.
Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
QMAKE_LFLAGS_REL_RPATH
Задает флаги компоновщика, необходимые для включения относительных путей в QMAKE_RPATHDIR.
Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
QMAKE_REL_RPATH_BASE
Задает строку, которую динамический компоновщик понимает как расположение ссылающегося исполняемого файла или библиотеки.
Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
QMAKE_LFLAGS_RPATHLINK
Задает флаги компоновщика, необходимые для использования значений из QMAKE_RPATHLINKDIR.
Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
QMAKE_LFLAGS_RELEASE
Задает флаги компоновщика для сборок выпуска. Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
Задает флаги компоновщика для сборок выпуска, где force_debug_info
установлено в CONFIG
. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LFLAGS_APP
Задает флаги компоновщика для создания приложений. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LFLAGS_SHLIB
Задает флаги компоновщика, используемые для создания общих библиотек. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LFLAGS_SONAME
Задает флаги компоновщика для установки имени общих объектов, например .so или .dll. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LFLAGS_THREAD
Задает флаги компоновщика для создания многопоточных проектов.Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LFLAGS_WINDOWS
Примечание: Эта переменная используется только в Windows.
Задает флаги компоновщика для создания проектов Windows GUI (то есть неконсольных приложений). Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LIBDIR
Задает список путей поиска библиотек для всех проектов.Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
Чтобы указать дополнительные пути поиска в файлах проекта, используйте вместо этого LIBS:
LIBS + = -L / путь / к / библиотекам
QMAKE_LIBDIR_POST
Задает список путей поиска системной библиотеки для всех проектов. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LIBDIR_FLAGS
Примечание: Эта переменная используется только на платформах Unix.
Задает расположение всех библиотечных каталогов с префиксом -L. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LIBDIR_EGL
Задает расположение каталога библиотеки EGL, когда EGL используется с OpenGL / ES или OpenVG. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LIBDIR_OPENGL
Задает расположение каталога библиотеки OpenGL.Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
Если реализация OpenGL использует EGL (большинство систем OpenGL / ES), то может также потребоваться установить QMAKE_LIBDIR_EGL.
QMAKE_LIBDIR_OPENVG
Задает расположение каталога библиотеки OpenVG. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
Если реализация OpenVG использует EGL, то может также потребоваться установить QMAKE_LIBDIR_EGL.
QMAKE_LIBDIR_X11
Примечание: Эта переменная используется только на платформах Unix.
Задает расположение каталога библиотеки X11. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LIBS
Задает дополнительные библиотеки, с которыми должен связываться каждый проект. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
Чтобы указать библиотеки в файле проекта, используйте вместо этого LIBS.
QMAKE_LIBS_PRIVATE
Указывает дополнительные частные библиотеки, с которыми должен связываться каждый проект. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
Чтобы указать частные библиотеки в файле проекта библиотеки, используйте вместо этого LIBS_PRIVATE.
QMAKE_LIBS_EGL
Определяет все библиотеки EGL при сборке Qt с OpenGL / ES или OpenVG. Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении. Обычное значение — -lEGL
.
QMAKE_LIBS_OPENGL
Задает все библиотеки OpenGL. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
Если реализация OpenGL использует EGL (большинство систем OpenGL / ES), то может также потребоваться установка QMAKE_LIBS_EGL.
QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES2
Эти переменные определяют все библиотеки OpenGL для OpenGL ES 1 и OpenGL ES 2.
Значение этих переменных обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
Если реализация OpenGL использует EGL (большинство систем OpenGL / ES), то может также потребоваться установка QMAKE_LIBS_EGL.
QMAKE_LIBS_OPENVG
Задает все библиотеки OpenVG. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять. Обычное значение — -lOpenVG
.
Некоторые механизмы OpenVG реализованы поверх OpenGL.Это будет обнаружено во время настройки, и QMAKE_LIBS_OPENGL будет неявно добавлен в QMAKE_LIBS_OPENVG, где бы ни были связаны библиотеки OpenVG.
Если реализация OpenVG использует EGL, то может также потребоваться установить QMAKE_LIBS_EGL.
QMAKE_LIBS_THREAD
Примечание: Эта переменная используется только на платформах Unix.
Задает все библиотеки, с которыми необходимо выполнить компоновку при построении многопоточного целевого объекта. Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
QMAKE_LIBS_X11
Примечание: Эта переменная используется только на платформах Unix.
Задает все библиотеки X11. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LIB_FLAG
Эта переменная не пуста, если указан шаблон lib
. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LINK
Задает компоновщик, который будет использоваться при создании проектов на основе приложений. Необходимо указать только имя файла исполняемого файла компоновщика, если он находится на пути, содержащемся в переменной PATH
при обработке Makefile. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LINK_SHLIB_CMD
Задает команду для выполнения при создании общей библиотеки.Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LN_SHLIB
Задает команду для выполнения при создании ссылки на общую библиотеку. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_LRELEASE_FLAGS
Список дополнительных параметров, передаваемых lrelease при включении через CONFIG + = lrelease.
QMAKE_OBJECTIVE_CFLAGS
Задает флаги компилятора Objective C / C ++ для построения проекта.Эти флаги используются в дополнение к QMAKE_CFLAGS и QMAKE_CXXFLAGS.
QMAKE_POST_LINK
Задает команду для выполнения после связывания TARGET. Эта переменная обычно пуста, поэтому ничего не выполняется.
Примечание: Эта переменная не влияет на проекты Xcode.
QMAKE_PRE_LINK
Задает команду для выполнения перед связыванием ЦЕЛЬ. Эта переменная обычно пуста, поэтому ничего не выполняется.
Примечание: Эта переменная не влияет на проекты Xcode.
QMAKE_PROJECT_NAME
Примечание. Эта переменная используется только для файлов проекта Visual Studio.
Определяет имя проекта при создании файлов проекта для IDE. Значение по умолчанию — имя цели. Значение этой переменной обычно обрабатывается qmake и редко нуждается в изменении.
QMAKE_PROVISIONING_PROFILE
Примечание. Эта переменная используется только в macOS, iOS, tvOS и watchOS.
UUID действующего профиля обеспечения. Используйте вместе с QMAKE_DEVELOPMENT_TEAM, чтобы указать профиль обеспечения.
Примечание. Указание профиля обеспечения отключает автоматически управляемую подпись.
QMAKE_MAC_SDK
Эта переменная используется в macOS при создании универсальных двоичных файлов.
QMAKE_MACOSX_DEPLOYMENT_TARGET
Примечание. Эта переменная используется только на платформе macOS.
Указывает аппаратную минимальную версию macOS, которую поддерживает приложение.
Для получения дополнительной информации см. Зависимости версий macOS.
QMAKE_MAKEFILE
Задает имя создаваемого Makefile. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_QMAKE
Содержит абсолютный путь к исполняемому файлу qmake.
Примечание: Не пытайтесь перезаписать значение этой переменной.
QMAKE_RESOURCE_FLAGS
Эта переменная используется для настройки списка параметров, передаваемых компилятору ресурсов в каждом из правил сборки, в которых он используется.Например, следующая строка гарантирует, что параметры -threshold
и -compress
используются с определенными значениями каждый раз, когда вызывается rcc
:
QMAKE_RESOURCE_FLAGS + = -пороговое значение 0 -сжатие 9
QMAKE_RPATHDIR
Примечание: Эта переменная используется только на платформах Unix.
Определяет список путей к библиотекам, которые добавляются к исполняемому файлу во время компоновки, так что пути будут предпочтительно искать во время выполнения.
Когда указаны относительные пути, qmake будет преобразовывать их в форму, которую динамический компоновщик понимает как относительную к местоположению ссылающегося исполняемого файла или библиотеки. Это поддерживается только некоторыми платформами (в настоящее время Linux и платформы Darwin) и обнаруживается путем проверки того, установлен ли QMAKE_REL_RPATH_BASE.
QMAKE_RPATHLINKDIR
Задает список путей к библиотекам для статического компоновщика для поиска неявных зависимостей разделяемых библиотек. Для получения дополнительной информации см. Страницу руководства для ld (1)
.
QMAKE_RUN_CC
Задает отдельное правило, необходимое для создания объекта. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_RUN_CC_IMP
Задает отдельное правило, необходимое для создания объекта. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_RUN_CXX
Задает отдельное правило, необходимое для создания объекта.Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_RUN_CXX_IMP
Задает отдельное правило, необходимое для создания объекта. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_SONAME_PREFIX
Если определено, значение этой переменной используется как путь, добавляемый к идентификатору SONAME
встроенной разделяемой библиотеки. SONAME
— это идентификатор, который динамический компоновщик позже будет использовать для ссылки на библиотеку.Как правило, эта ссылка может быть именем библиотеки или полным путем к библиотеке. В macOS, iOS, tvOS и watchOS путь может быть указан относительно с использованием следующих заполнителей:
Заполнитель | Эффект |
---|---|
@rpath | Расширяется до путей, определенных командами LC_RPATH mach-o в исполняемом файле текущего процесса или в соответствующих библиотеках. |
@executable_path | Расширяется до расположения исполняемого файла текущего процесса. |
@loader_path | Раскрывается до соответствующего исполняемого файла или расположения библиотеки. |
В большинстве случаев достаточно использовать @rpath
и рекомендуется:
# <корень проекта> /project.pro QMAKE_SONAME_PREFIX = @rpath
Однако префикс также может быть указан с использованием других заполнителей или абсолютного пути, например, одного из следующих:
# <корень проекта> /project.pro QMAKE_SONAME_PREFIX = @ исполняемый_путь /../Frameworks QMAKE_SONAME_PREFIX = @ путь_загрузчика / Frameworks QMAKE_SONAME_PREFIX = / Библиотека / Frameworks
Для получения дополнительной информации см. Документацию dyld по именам установки динамических библиотек.
QMAKE_TARGET
Задает имя цели проекта. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
QMAKE_TARGET_COMPANY
Только Windows. Определяет компанию для цели проекта; там, где это применимо, это используется для размещения названия компании в свойствах приложения.Это используется, только если установлена переменная VERSION или RC_ICONS, а переменные RC_FILE и RES_FILE не установлены.
QMAKE_TARGET_DESCRIPTION
Только Windows. Задает описание цели проекта; там, где это возможно, используется для помещения описания в свойствах приложения. Это используется, только если установлена переменная VERSION или RC_ICONS, а переменные RC_FILE и RES_FILE не установлены.
QMAKE_TARGET_COPYRIGHT
Только Windows.Задает информацию об авторских правах для цели проекта; там, где это применимо, это используется для размещения информации об авторских правах в свойствах приложения. Это используется, только если установлена переменная VERSION или RC_ICONS, а переменные RC_FILE и RES_FILE не установлены.
QMAKE_TARGET_PRODUCT
Только Windows. Задает продукт для цели проекта; это используется там, где это применимо, для помещения продукта в свойствах приложения. Это используется, только если установлена переменная VERSION или RC_ICONS, а переменные RC_FILE и RES_FILE не установлены.
QMAKE_MANIFEST
Только Windows. Задает файл манифеста для цели проекта. Это используется только в том случае, если переменные RC_FILE и RES_FILE не установлены. Не забудьте удалить embed_manifest_exe и embed_manifest_dll из переменной CONFIG, иначе это будет конфликтовать с созданной компилятором.
QMAKE_TVOS_DEPLOYMENT_TARGET
Примечание: Эта переменная используется только на платформе tvOS.
Указывает аппаратную минимальную версию tvOS, которую поддерживает приложение.
Для получения дополнительной информации см. Выражение поддерживаемых версий iOS.
QMAKE_UIC_FLAGS
Эта переменная используется для настройки списка параметров, передаваемых компилятору пользовательского интерфейса в каждом из правил сборки, в которых он используется.
QMAKE_WATCHOS_DEPLOYMENT_TARGET
Примечание: Эта переменная используется только на платформе watchOS.
Указывает аппаратную минимальную версию watchOS, которую поддерживает приложение.
Для получения дополнительной информации см. Выражение поддерживаемых версий iOS.
QML_IMPORT_MAJOR_VERSION
Указывает основную версию, которая будет использоваться для автоматически генерируемых регистраций типа QML. Для получения дополнительной информации см. Определение типов QML из C ++.
QML_IMPORT_MINOR_VERSION
При автоматической регистрации типов QML, определенных в C ++, зарегистрируйте дополнительную версию модуля, используя эту вспомогательную версию. Как правило, второстепенные версии, подлежащие регистрации, выводятся из метаобъектов.
Вы можете использовать эту переменную, если метаобъекты не изменились, и вы все еще хотите импортировать модуль QML с более новым второстепенным номером версии.Например, метаобъекты MyModule
находятся на уровне 1.1
, но вы хотите импортировать модуль как 1.3
.
QML_IMPORT_VERSION
Задает QML_IMPORT_MAJOR_VERSION и QML_IMPORT_MINOR_VERSION как строку версии
.
QML_IMPORT_NAME
Задает имя модуля, которое будет использоваться для автоматически созданных регистраций типа QML. Для получения дополнительной информации см. Определение типов QML из C ++.
Задает дополнительные файлы JSON с метатипами, которые следует учитывать при создании файлов qmltypes.Используйте это, когда внешние библиотеки предоставляют типы, которые доступны QML либо напрямую, либо как базовые типы или свойства других типов. Типы Qt будут учитываться автоматически, и их не нужно добавлять сюда.
QT
Задает модули Qt, которые используются в вашем проекте. Значение, которое нужно добавить для каждого модуля, см. В документации модуля.
На уровне реализации C ++ использование модуля Qt делает его заголовки доступными для включения и заставляет его связываться с двоичным файлом.
По умолчанию, QT
содержит core
и gui
, что гарантирует создание стандартных приложений с графическим интерфейсом без дополнительной настройки.
Если вы хотите собрать проект без модуля Qt GUI, вам нужно исключить значение gui
с помощью оператора «- =». Следующая строка приведет к созданию минимального проекта Qt:
QT - = gui # Используется только основной модуль.
Если ваш проект является подключаемым модулем Qt Designer , используйте значение uiplugin
, чтобы указать, что проект должен быть построен как библиотека, но с определенной поддержкой подключаемого модуля для Qt Designer .Для получения дополнительной информации см. Сборка и установка подключаемого модуля.
QTPLUGIN
Задает список имен статических подключаемых модулей Qt, которые должны быть связаны с приложением, чтобы они были доступны как встроенные ресурсы.
qmake автоматически добавляет плагины, которые обычно необходимы используемым модулям Qt (см. QT
). Настройки по умолчанию настроены для оптимального использования сразу после установки. См. Статические плагины для получения списка доступных плагинов и способов переопределить автоматическое связывание.
Эта переменная в настоящее время не действует при компоновке с совместно используемой / динамической сборкой Qt или при компоновке библиотек. Его можно использовать для развертывания динамических подключаемых модулей позже.
QT_VERSION
Содержит текущую версию Qt.
QT_MAJOR_VERSION
Содержит текущую основную версию Qt.
QT_MINOR_VERSION
Содержит текущую дополнительную версию Qt.
QT_PATCH_VERSION
Содержит текущую версию исправления Qt.
RC_FILE
Только Windows. Задает имя файла ресурсов Windows (.rc) для цели. См. Добавление файлов ресурсов Windows.
RC_CODEPAGE
Только Windows. Задает кодовую страницу, которая должна быть указана в созданном файле .rc. Это используется, только если установлена переменная VERSION или RC_ICONS, а переменные RC_FILE и RES_FILE не установлены.
RC_DEFINES
Только Windows. qmake добавляет значения этой переменной как макросы препроцессора RC (параметр / d).Если эта переменная не установлена, вместо нее используется переменная DEFINES.
RC_DEFINES + = USE_MY_STUFF
RC_ICONS
Только Windows. Задает значки, которые должны быть включены в сгенерированный файл .rc. Это используется только в том случае, если переменные RC_FILE и RES_FILE не установлены. Более подробную информацию о создании файлов .rc можно найти в Примечаниях к платформе.
RC_LANG
Только Windows. Задает язык, который должен быть указан в сгенерированном.rc файл. Это используется, только если установлена переменная VERSION или RC_ICONS, а переменные RC_FILE и RES_FILE не установлены.
RC_INCLUDEPATH
Задает пути включения, которые передаются компилятору ресурсов Windows.
RCC_DIR
Задает каталог для выходных файлов компилятора ресурсов Qt.
Например:
unix: RCC_DIR = ../myproject/resources win32: RCC_DIR = c: / myproject / resources
ТРЕБУЕТ
Задает список значений, которые оцениваются как условия.Если какое-либо из условий ложно, qmake пропускает этот проект (и его ПОДКАТАЛОГИ) при сборке.
Примечание: Мы рекомендуем вместо этого использовать функцию requires (), если вы хотите пропустить проекты или подпроекты при построении.
РЕСУРСОВ
Задает имя файлов коллекции ресурсов (qrc) для цели. Для получения дополнительной информации о файле коллекции ресурсов см. Система ресурсов Qt.
RES_FILE
Только Windows. Задает имя выходного файла компилятора ресурсов Windows для этой цели.См. RC_FILE и Добавление файлов ресурсов Windows.
Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
ИСТОЧНИКОВ
Задает имена всех исходных файлов в проекте.
Например:
ИСТОЧНИКИ = myclass.cpp \ login.cpp \ mainwindow.cpp
См. Также ЗАГОЛОВКИ.
ПОДКЛАДКИ
Эта переменная при использовании с шаблоном subdirs
определяет имена всех подкаталогов или файлов проекта, которые содержат части проекта, которые необходимо построить.Каждый подкаталог, указанный с помощью этой переменной, должен содержать собственный файл проекта.
Рекомендуется, чтобы файл проекта в каждом подкаталоге имел то же базовое имя, что и сам подкаталог, поскольку это позволяет опустить имя файла. Например, если подкаталог называется myapp
, файл проекта в этом каталоге должен называться myapp.pro
.
Как вариант, вы можете указать относительный путь к файлу .pro в любом каталоге. Настоятельно рекомендуется указывать только пути в родительском каталоге текущего проекта или его подкаталогах.
Например:
SUBDIRS = ядро \ инструменты \ myapp
Если вам необходимо убедиться, что подкаталоги построены в определенном порядке, используйте модификатор .depends
для соответствующих элементов SUBDIRS
.
Например:
SUBDIRS + = my_executable my_library tests doc my_executable.depends = my_library tests.depends = my_executable
Приведенная выше конфигурация гарантирует, что my_library
создается до my_executable
и что my_executable
создается до проверяет
.Однако doc
может быть построен параллельно с другими подкаталогами, что ускоряет процесс сборки.
Примечание: Можно указать несколько зависимостей, и все они будут построены до целевой, которая от них зависит.
Примечание: Использование CONFIG + = Order не рекомендуется, поскольку это может замедлить многоядерные сборки. В отличие от примера, показанного выше, все сборки будут выполняться последовательно, даже если у них нет зависимостей.
Помимо определения порядка сборки, можно изменить поведение по умолчанию для SUBDIRS
, задав дополнительные модификаторы для элементов SUBDIRS
.Поддерживаемые модификаторы:
Модификатор | Эффект |
---|---|
.subdir | Использовать указанный подкаталог вместо значения SUBDIRS . |
.file | Явно укажите файл подпроекта pro . Не может использоваться вместе с модификатором .subdir . |
.depends | Этот подпроект зависит от указанного подпроекта (ов). |
.makefile | Makefile подпроекта. Доступно только на платформах, использующих make-файлы. |
.target | Базовая строка, используемая для целей make-файла, связанных с этим подпроектом. Доступно только на платформах, использующих make-файлы. |
Например, определите два подкаталога, оба из которых находятся в другом каталоге, чем значение SUBDIRS
, и один из подкаталогов должен быть построен раньше другого:
SUBDIRS + = my_executable my_library my_executable.subdir = приложение my_executable.depends = my_library my_library.subdir = lib
ЦЕЛЬ
Задает имя целевого файла. По умолчанию содержит базовое имя файла проекта.
Например:
ШАБЛОН = приложение TARGET = myapp ИСТОЧНИКИ = main.cpp
Приведенный выше файл проекта создаст исполняемый файл с именем myapp
в unix и myapp.exe
в Windows.
TARGET_EXT
Определяет расширение TARGET
.Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
TARGET_x
Задает расширение TARGET
с основным номером версии. Значение этой переменной обычно обрабатывается qmake или qmake.conf, и его редко нужно изменять.
TARGET_x.y.z
Задает расширение TARGET
с номером версии. Значение этой переменной обычно обрабатывается qmake или qmake.conf и редко нуждается в изменении.
ШАБЛОН
Задает имя шаблона для использования при создании проекта. Допустимые значения:
Опция | Описание |
---|---|
приложение | Создает Makefile для создания приложений (по умолчанию). См. Создание приложения для получения дополнительной информации. |
lib | Создает Makefile для сборки библиотек. См. Создание библиотеки для получения дополнительной информации. |
subdirs | Создает Makefile для создания целей в подкаталогах. Подкаталоги указываются с помощью переменной SUBDIRS. |
aux | Создает Makefile, чтобы ничего не создавать. Используйте это, если не нужно вызывать компилятор для создания цели; например, потому что ваш проект написан на интерпретируемом языке. Примечание: Этот тип шаблона доступен только для генераторов на основе Makefile. В частности, он не будет работать с генераторами vcxproj и Xcode. |
vcapp | Только для Windows. Создает проект приложения для Visual Studio. См. Раздел Создание файлов проекта Visual Studio для получения дополнительной информации. |
vclib | Только для Windows. Создает проект библиотеки для Visual Studio. |
Например:
ШАБЛОН = lib ИСТОЧНИКИ = main.cpp TARGET = mylib
Шаблон можно переопределить, указав новый тип шаблона с помощью параметра командной строки -t
.Это отменяет тип шаблона после обработки файла .pro. В файлах .pro, которые используют тип шаблона для определения того, как построен проект, необходимо объявить TEMPLATE в командной строке, а не использовать параметр -t
.
ПЕРЕВОДЫ
Задает список файлов переводов (.ts), которые содержат переводы текста пользовательского интерфейса на неродные языки.
файлов перевода в TRANSLATIONS
будут обрабатываться как lrelease, так и с помощью инструментов lupdate.Используйте EXTRA_TRANSLATIONS, если вы хотите, чтобы только lrelease
обрабатывал файл.
Вы можете использовать CONFIG + = lrelease для автоматической компиляции файлов во время сборки и CONFIG + = lrelease embed_translations, чтобы сделать их доступными в системе ресурсов Qt.
См. Руководство Qt Linguist для получения дополнительной информации об интернационализации (i18n) и локализации (l10n) с помощью Qt.
UI_DIR
Задает каталог, в который должны быть помещены все промежуточные файлы из uic.
Например:
unix: UI_DIR = ../myproject/ui win32: UI_DIR = c: / myproject / ui
ВЕРСИЯ
Задает номер версии приложения, если указан шаблон приложения
, или номер версии библиотеки, если указан шаблон lib
.
В Windows запускает автоматическое создание файла .rc, если переменные RC_FILE и RES_FILE не установлены. Сгенерированный файл .rc будет иметь записи FILEVERSION и PRODUCTVERSION, заполненные основным, второстепенным, уровнем исправления и номером сборки.Каждое число должно находиться в диапазоне от 0 до 65535. Более подробную информацию о создании файлов .rc можно найти в примечаниях к платформе.
Например:
win32: ВЕРСИЯ = 1.2.3.4 # major.minor.patch.build еще: ВЕРСИЯ = 1.2.3 # major.minor.patch
Только Windows. Задает номер версии, который компоновщик Windows помещает в заголовок файла .exe или .dll с помощью параметра / VERSION. Могут быть указаны только основная и дополнительная версия. Если VERSION_PE_HEADER не установлен, он возвращается к основной и дополнительной версии из VERSION (если установлено).
VER_MAJ
Задает основной номер версии библиотеки, если указан шаблон lib
.
VER_MIN
Задает дополнительный номер версии библиотеки, если указан шаблон lib
.
VER_PAT
Задает номер версии исправления библиотеки, если указан шаблон lib
.
VPATH
Сообщает qmake, где искать файлы, которые он не может открыть. Например, если qmake ищет ИСТОЧНИКОВ
и находит запись, которую не может открыть, он просматривает весь список VPATH, чтобы увидеть, сможет ли он найти файл самостоятельно.
См. Также DEPENDPATH.
WINDOWS_TARGET_PLATFORM_VERSION
Задает целевую версию Windows; это соответствует тегу WindowsTargetPlatformVersion
в файлах vcxproj.
На настольных компьютерах Windows значением по умолчанию является значение переменной среды WindowsSDKVersion
.
На универсальной платформе Windows (UWP) значением по умолчанию является значение переменной среды UCRTVERSION
.
WINDOWS_TARGET_PLATFORM_MIN_VERSION
Задает минимальную версию целевой платформы Windows; это соответствует тегу WindowsTargetPlatformMinVersion
в файлах vcxproj.
По умолчанию WINDOWS_TARGET_PLATFORM_VERSION
.
WINRT_MANIFEST
Задает параметры, передаваемые в манифест приложения в UWP. Допустимые значения:
Элемент | Описание |
---|---|
архитектура | Целевая архитектура. По умолчанию VCPROJ_ARCH . |
фон | Цвет фона плитки. По умолчанию зеленый . |
возможности | Задает возможности для добавления в список возможностей. |
features_device | Задает возможности устройства, которые нужно добавить в список возможностей (местоположение, веб-камера и т. Д.). |
CONFIG | Задает дополнительные флаги для обработки входного файла манифеста. В настоящее время доступен только verbatim . |
default_language | Код языка приложения по умолчанию.По умолчанию «en». |
dependencies | Задает зависимости, необходимые для пакета. |
описание | Описание упаковки. По умолчанию Описание пакета по умолчанию . |
переднего плана | Цвет переднего плана (текста) плитки. По умолчанию light . |
iconic_tile_icon | Файл изображения для значка iconic шаблона плитки . По умолчанию предоставляется mkspec. |
iconic_tile_small | Файл изображения для небольшого логотипа шаблона плитки iconic . По умолчанию предоставляется mkspec. |
идентификатор | Уникальный идентификатор приложения. По умолчанию используется повторное использование существующего сгенерированного UUID манифеста или создается новый UUID, если его нет. |
logo_30x30 | Файл изображения логотипа размером 30×30 пикселей. |
logo_41x41 | Файл изображения логотипа размером 41×41 пиксель.Этот параметр устарел. |
logo_70x70 | Файл изображения логотипа размером 70×70 пикселей. |
logo_71x71 | Файл изображения логотипа размером 71×71 пиксель. Этот параметр устарел. |
logo_150x150 | Файл изображения логотипа размером 150×150 пикселей. Это поддерживается на всех платформах приложений Магазина Windows. |
logo_310x150 | Файл изображения логотипа размером 310×150 пикселей. Это поддерживается на всех платформах приложений Магазина Windows. |
logo_310x310 | Файл изображения логотипа размером 310×310 пикселей. Это поддерживается на всех платформах приложений Магазина Windows. |
logo_620x300 | Файл изображения заставки размером 620×300 пикселей. |
logo_480x800 | Файл изображения заставки размером 480×800 пикселей. Этот параметр устарел. |
logo_large | Файл с большим изображением логотипа. Это должно быть 150×150 пикселей. Поддерживается на всех платформах приложений Магазина Windows.По умолчанию предоставляется mkspec. |
logo_medium | Файл среднего изображения логотипа. Изображение должно иметь размер 70×70 пикселей. По умолчанию предоставляется mkspec. |
logo_small | Небольшой файл изображения логотипа. Изображение должно иметь размер 30×30 пикселей. По умолчанию предоставляется mkspec. |
logo_splash | Файл изображения заставки. Изображение должно иметь размер 620×300 пикселей. По умолчанию предоставляется mkspec. |
logo_store | Файл изображения логотипа для Магазина Windows.По умолчанию предоставляется mkspec. |
logo_wide | Файл изображения широкого логотипа. Это должно быть 310×150 пикселей. Поддерживается на всех платформах приложений Магазина Windows. По умолчанию предоставляется mkspec. |
имя | Имя пакета, отображаемое пользователю. По умолчанию TARGET. |
phone_product_id | GUID продукта. Этот параметр устарел. |
phone_publisher_id | GUID издателя.Этот параметр устарел. |
publisher | Отображаемое имя издателя. По умолчанию Отображаемое имя издателя по умолчанию . |
publisher_id | Отличительное имя издателя (по умолчанию: CN = MyCN ). |
цель | Имя цели (.exe). По умолчанию TARGET. |
версия | Номер версии пакета. По умолчанию 1.0.0.0 . |
minVersion | Минимальная необходимая версия Windows для запуска пакета. По умолчанию WINDOWS_TARGET_PLATFORM_VERSION . |
maxVersionTested | Максимальная версия Windows, с которой тестировался пакет. По умолчанию WINDOWS_TARGET_PLATFORM_MIN_VERSION . |
Вы можете использовать любую комбинацию этих значений.
Например:
WINRT_MANIFEST.publisher = MyCompany WINRT_MANIFEST.logo_store = someImage.png WINRT_MANIFEST.capabilities + = internetClient WINRT_MANIFEST.capabilities_device + = местоположение
Кроме того, можно указать входной файл манифеста с помощью WINRT_MANIFEST.
Например:
WINRT_MANIFEST = someManifest.xml.in
Если входной файл манифеста не должен обрабатываться, а только копироваться в целевой каталог, необходимо задать дословную конфигурацию.
WINRT_MANIFEST = someManifest.xml.in WINRT_MANIFEST.КОНФИГУРАЦИЯ + = дословно
YACCSOURCES
Задает список исходных файлов Yacc, которые будут включены в проект. Все зависимости, заголовки и исходные файлы будут автоматически включены в проект.
Например:
_PRO_FILE_
Содержит путь к используемому файлу проекта.
Например, следующая строка вызывает запись местоположения файла проекта в консоль:
Примечание: Не пытайтесь перезаписать значение этой переменной.
_PRO_FILE_PWD_
Содержит путь к каталогу, содержащему используемый файл проекта.
Например, следующая строка приводит к тому, что расположение каталога, содержащего файл проекта, будет записано в консоль:
Сообщение
($$ _ PRO_FILE_PWD_)
Примечание: Не пытайтесь перезаписать значение этой переменной.
Начало работы | qmake Руководство
Этот туториал научит вас основам qmake. В других разделах этого руководства содержится более подробная информация об использовании qmake.
Простой старт
Предположим, что вы только что закончили базовую реализацию своего приложения и создали следующие файлы:
- hello.cpp
- привет.h
- main.cpp
Вы найдете эти файлы в каталоге examples / qmake / tutorial
дистрибутива Qt. Единственное, что вы знаете о настройке приложения, это то, что оно написано на Qt. Сначала с помощью вашего любимого текстового редактора создайте файл с именем hello.pro
в примерах / qmake / tutorial
. Первое, что вам нужно сделать, это добавить строки, которые сообщают qmake об исходных файлах и файлах заголовков, которые являются частью вашего проекта разработки.
Сначала мы добавим исходные файлы в файл проекта. Для этого вам нужно использовать переменную SOURCES. Просто начните новую строку с SOURCES + =
и поместите после нее hello.cpp. У вас должно получиться что-то вроде этого:
Мы повторяем это для каждого исходного файла в проекте, пока не получим следующее:
ИСТОЧНИКОВ + = привет.cpp ИСТОЧНИКИ + = main.cpp
Если вы предпочитаете использовать синтаксис Make-like, со всеми файлами, перечисленными за один раз, вы можете использовать экранирование новой строки следующим образом:
ИСТОЧНИКИ = hello.cpp \ main.cpp
Теперь, когда исходные файлы перечислены в файле проекта, необходимо добавить файлы заголовков. Они добавляются точно так же, как исходные файлы, за исключением того, что мы используем имя переменной HEADERS.
После того, как вы это сделаете, ваш файл проекта должен выглядеть примерно так:
ЗАГОЛОВКИ + = привет.час ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp
Имя цели устанавливается автоматически. Это то же самое, что и имя файла проекта, но с суффиксом, соответствующим платформе. Например, если файл проекта называется hello.pro
, целью будет hello.exe
в Windows и hello
в Unix. Если вы хотите использовать другое имя, вы можете установить его в файле проекта:
Готовый файл проекта должен выглядеть так:
ЗАГОЛОВКИ + = привет.час ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp
Теперь вы можете использовать qmake для создания Makefile для вашего приложения. В командной строке в каталоге проекта введите следующее:
qmake -o Makefile hello.pro
Затем введите make
или nmake
в зависимости от используемого компилятора.
Для пользователей Visual Studio qmake также может создавать файлы проектов Visual Studio. Например:
Создание возможности отладки приложения
Версия выпуска приложения не содержит отладочных символов или другой отладочной информации.Во время разработки полезно создать отладочную версию приложения, содержащую соответствующую информацию. Этого легко добиться, добавив debug
в переменную CONFIG в файле проекта.
Например:
КОНФИГУРАЦИЯ + = отладка ЗАГОЛОВКИ + = hello.h ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp
Используйте qmake, как раньше, для создания файла Makefile. Теперь вы получите полезную информацию о своем приложении при его запуске в среде отладки.
Добавление исходных файлов для конкретной платформы
После нескольких часов написания кода вы, возможно, начали работу над частью вашего приложения, зависящей от платформы, и решили сохранить код, зависящий от платформы, отдельно.Итак, теперь у вас есть два новых файла, которые нужно включить в файл проекта: hellowin.cpp
и hellounix.cpp
. Мы не можем просто добавить их в переменную SOURCES
, поскольку это поместит оба файла в Makefile. Итак, что нам здесь нужно сделать, так это использовать область видимости, которая будет обрабатываться в зависимости от того, для какой платформы мы создаем.
Простая область, добавляющая платформенно-зависимый файл для Windows, выглядит так:
win32 { ИСТОЧНИКИ + = hellowin.cpp }
При сборке для Windows qmake добавляет hellowin.cpp
в список исходных файлов. При сборке для любой другой платформы qmake просто игнорирует это. Теперь все, что осталось сделать, это создать область для файла, специфичного для Unix.
Когда вы это сделаете, ваш файл проекта должен выглядеть примерно так:
КОНФИГУРАЦИЯ + = отладка ЗАГОЛОВКИ + = hello.h ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp win32 { ИСТОЧНИКИ + = hellowin.cpp } unix { ИСТОЧНИКИ + = hellounix.cpp }
Используйте qmake, как раньше, для создания файла Makefile.
Остановка qmake, если файл не существует
Возможно, вы не захотите создавать Makefile, если определенный файл не существует. Мы можем проверить, существует ли файл, используя функцию exists (). Мы можем остановить обработку qmake с помощью функции error (). Это работает так же, как и осциллографы. Просто замените условие области на функцию. Проверка файла с именем main.cpp выглядит так:
! Существует (main.cpp) { ошибка ("Файл main.cpp не найден") }
Модель ! Символ
используется для отмены теста. То есть существует (main.cpp)
истинно, если файл существует, и ! Существует (main.cpp)
истинно, если файл не существует.
КОНФИГУРАЦИЯ + = отладка ЗАГОЛОВКИ + = hello.h ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp win32 { ИСТОЧНИКИ + = hellowin.cpp } unix { ИСТОЧНИКИ + = hellounix.cpp } ! exists (main.cpp) { ошибка ("Файл main.cpp не найден") }
Используйте qmake, как и раньше, для создания make-файла.Если вы временно переименуете main.cpp в
, вы увидите сообщение, и qmake прекратит обработку.
Проверка более чем одного условия
Предположим, вы используете Windows и хотите видеть вывод оператора с помощью qDebug ()
, когда вы запускаете свое приложение в командной строке. Чтобы увидеть результат, вы должны создать свое приложение с соответствующими настройками консоли. Мы можем легко поместить консоль
в строку CONFIG
, чтобы включить этот параметр в Makefile в Windows.Однако предположим, что мы хотим добавить строку CONFIG
только тогда, когда мы работаем в Windows и , когда debug
уже находится в строке CONFIG
. Это требует использования двух вложенных областей видимости. Сначала создайте одну область видимости, а затем внутри нее другую. Поместите настройки для обработки во вторую область, например:
win32 { debug { КОНФИГУРАЦИЯ + = консоль } }
Вложенные области можно объединить с помощью двоеточия, поэтому окончательный файл проекта будет выглядеть так:
КОНФИГУРАЦИЯ + = отладка ЗАГОЛОВКИ + = привет.час ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp win32 { ИСТОЧНИКИ + = hellowin.cpp } unix { ИСТОЧНИКИ + = hellounix.cpp } ! exists (main.cpp) { ошибка ("Файл main.cpp не найден") } win32: debug { КОНФИГУРАЦИЯ + = консоль }
Вот и все! Вы завершили руководство по qmake и готовы писать файлы проекта для своих проектов разработки.
qmake Учебник | Qt 4.8
Из этого туториала Вы узнаете, как использовать qmake
. Мы рекомендуем вам прочитать руководство пользователя qmake
после завершения этого руководства.
Начиная с простого
Предположим, что вы только что закончили базовую реализацию своего приложения и создали следующие файлы:
- hello.cpp
- привет.h
- main.cpp
Вы найдете эти файлы в каталоге examples / qmake / tutorial
дистрибутива Qt. Единственное, что вы знаете о настройке приложения, это то, что оно написано на Qt. Сначала с помощью вашего любимого текстового редактора создайте файл с именем hello.pro
в примерах / qmake / tutorial
. Первое, что вам нужно сделать, это добавить строки, которые сообщают qmake
об исходных файлах и файлах заголовков, которые являются частью вашего проекта разработки.
Сначала мы добавим исходные файлы в файл проекта. Для этого вам нужно использовать переменную SOURCES. Просто начните новую строку с SOURCES + =
и поместите после нее hello.cpp. У вас должно получиться что-то вроде этого:
Мы повторяем это для каждого исходного файла в проекте, пока не получим следующее:
ИСТОЧНИКОВ + = привет.cpp ИСТОЧНИКИ + = main.cpp
Если вы предпочитаете использовать синтаксис Make-like, со всеми файлами, перечисленными за один раз, вы можете использовать экранирование новой строки следующим образом:
ИСТОЧНИКИ = hello.cpp \ main.cpp
Теперь, когда исходные файлы перечислены в файле проекта, необходимо добавить файлы заголовков. Они добавляются точно так же, как исходные файлы, за исключением того, что мы используем имя переменной HEADERS.
После того, как вы это сделаете, ваш файл проекта должен выглядеть примерно так:
ЗАГОЛОВКИ + = привет.час ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp
Имя цели устанавливается автоматически; это то же самое, что и файл проекта, но с суффиксом, соответствующим платформе. Например, если файл проекта называется hello.pro
, целью будет hello.exe
в Windows и hello
в Unix. Если вы хотите использовать другое имя, вы можете установить его в файле проекта:
Последний шаг — установить переменную CONFIG. Поскольку это приложение Qt, нам нужно поместить qt
в строку CONFIG
, чтобы qmake
добавлял соответствующие библиотеки для связывания и обеспечивал включение строк сборки для moc
и uic
в созданный Makefile.
Готовый файл проекта должен выглядеть так:
КОНФИГУРАЦИЯ + = qt ЗАГОЛОВКИ + = hello.h ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp
Теперь вы можете использовать qmake
для создания Makefile для вашего приложения. В командной строке в каталоге вашего проекта введите следующее:
qmake -o Makefile hello.pro
Затем введите make
или nmake
в зависимости от используемого компилятора.
Для пользователей Visual Studio qmake
также может генерировать .dsp
или файлы .vcproj
, например:
Создание возможности отладки приложения
Версия выпуска приложения не содержит отладочных символов или другой отладочной информации. Во время разработки полезно создать отладочную версию приложения, содержащую соответствующую информацию. Это легко достигается путем добавления debug
к переменной CONFIG
в файле проекта.
Например:
КОНФИГУРАЦИЯ + = отладка qt ЗАГОЛОВКИ + = привет.час ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp
Используйте qmake
, как и раньше, для создания Makefile, и вы сможете получить полезную информацию о своем приложении при его запуске в среде отладки.
Добавление исходных файлов для конкретной платформы
После нескольких часов написания кода вы, возможно, начали работу над частью вашего приложения, зависящей от платформы, и решили сохранить код, зависящий от платформы, отдельно. Итак, теперь у вас есть два новых файла, которые нужно включить в файл проекта: hellowin.cpp
и hellounix.cpp
. Мы не можем просто добавить их в переменную SOURCES
, поскольку это поместит оба файла в Makefile. Итак, что нам здесь нужно сделать, так это использовать область видимости, которая будет обрабатываться в зависимости от того, на какой платформе запущен qmake
.
Простая область, которая будет добавлена в зависящий от платформы файл для Windows, выглядит так:
win32 { ИСТОЧНИКИ + = hellowin.cpp }
Итак, если qmake
запущен в Windows, он добавит hellowin.cpp
в список исходных файлов. Если qmake
запущен на любой другой платформе, он просто проигнорирует его. Теперь все, что осталось сделать, это создать область для файла, специфичного для Unix.
Когда вы это сделаете, ваш файл проекта должен выглядеть примерно так:
КОНФИГУРАЦИЯ + = отладка qt ЗАГОЛОВКИ + = hello.h ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp win32 { ИСТОЧНИКИ + = hellowin.cpp } unix { ИСТОЧНИКИ + = hellounix.cpp }
Используйте qmake
, как раньше, для создания Makefile.
Остановка qmake, если файл не существует
Вы можете не захотеть создавать Makefile, если определенный файл не существует. Мы можем проверить, существует ли файл, используя функцию exists (). Мы можем остановить обработку qmake
с помощью функции error (). Это работает так же, как и осциллографы. Просто замените условие области на функцию. Проверка файла main.cpp
выглядит так:
! Exists (main.cpp) { ошибка ("Файл main.cpp не найден") }
Модель ! Символ
используется для отмены теста; я.е. существует (main.cpp)
истинно, если файл существует, и ! Существует (main.cpp)
истинно, если файл не существует.
КОНФИГУРАЦИЯ + = отладка qt ЗАГОЛОВКИ + = hello.h ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp win32 { ИСТОЧНИКИ + = hellowin.cpp } unix { ИСТОЧНИКИ + = hellounix.cpp } ! exists (main.cpp) { ошибка ("Файл main.cpp не найден") }
Используйте qmake
, как и раньше, для создания make-файла. Если вы временно переименуете main.cpp в
, вы увидите сообщение и qmake
прекратит обработку.
Проверка более чем одного условия
Предположим, вы используете Windows и хотите видеть вывод оператора с помощью qDebug () при запуске приложения в командной строке. Если вы не создадите свое приложение с соответствующими настройками консоли, вы не увидите результат. Мы можем легко поместить консоль
в строку CONFIG
, чтобы в Windows make-файл имел этот параметр. Однако предположим, что мы хотим добавить строку CONFIG
только в том случае, если мы работаем в Windows и , когда debug
уже находится в строке CONFIG
.Это требует использования двух вложенных областей видимости; просто создайте одну область видимости, а затем создайте в ней другую. Поместите настройки для обработки в последнюю область, например:
win32 { debug { КОНФИГУРАЦИЯ + = консоль } }
Вложенные области можно объединить с помощью двоеточия, поэтому окончательный файл проекта будет выглядеть так:
КОНФИГУРАЦИЯ + = отладка qt ЗАГОЛОВКИ + = hello.h ИСТОЧНИКИ + = hello.cpp ИСТОЧНИКИ + = main.cpp win32 { ИСТОЧНИКИ + = hellowin.cpp } unix { ИСТОЧНИКИ + = hellounix.cpp } ! exists (main.cpp) { ошибка ("Файл main.cpp не найден") } win32: debug { КОНФИГУРАЦИЯ + = консоль }
Вот и все! Вы завершили руководство по qmake
и готовы писать файлы проекта для своих проектов разработки.
Qt — «профессиональный» файл по умолчанию.
Пример
qmake — это инструмент автоматизации сборки, который поставляется с платформой Qt . Он выполняет аналогичную работу с такими инструментами, как CMake или GNU Autotools , но он разработан специально для использования с Qt .Таким образом, он хорошо интегрирован с экосистемой Qt , в частности с IDE Qt Creator .
Если вы запустите Qt Creator и выберите File -> New File or Project -> Application -> Qt Widgets
application, Qt Creator сгенерирует для вас скелет проекта вместе с «профессиональным» файлом. Файл «pro» обрабатывается qmake для создания файлов, которые, в свою очередь, обрабатываются базовыми системами сборки (например, GNU Make или nmake ).
Если вы назвали свой проект «myapp», то появится файл «myapp.pro». Вот как выглядит такой файл по умолчанию с комментариями, описывающими каждую добавленную переменную qmake .
# Сообщает системе сборки, что проект использует модули Qt Core и Qt GUI.
QT + = основной графический интерфейс
# До Qt 5 виджеты были частью модуля Qt GUI. В Qt 5 нам нужно добавить модуль Qt Widgets.
большеThan (QT_MAJOR_VERSION, 4): QT + = виджеты
# Задает имя двоичного файла.TARGET = myapp
# Обозначает, что проект является приложением.
ШАБЛОН = приложение
# Список исходных файлов (примечание: Qt Creator позаботится об этом списке, вам не нужно обновлять его вручную).
ИСТОЧНИКИ + = main.cpp \
mainwindow.cpp
# Список файлов заголовков (примечание: Qt Creator позаботится об этом списке).
ЗАГОЛОВКИ + = mainwindow.h
# Список файлов "ui" для инструмента под названием Qt Designer, который встроен в Qt Creator в новых версиях IDE (примечание: Qt Creator позаботится об этом списке).ФОРМЫ + = mainwindow.ui
.