6.9. Использование Qt

6.9.1. Порты, для которых требуется Qt

Таблица 6.7. Переменные для портов, использующих Qt
USE_QT_VERПорт использует инструментальный пакет Qt. Возможными значениями являются 3 и 4, каждая из которых указывает на старший номер используемой версии Qt. Соответствующие параметры передаются в сценарий configure и make.
QT_PREFIXУстанавливается в значение, содержащее путь к установленному Qt (переменная только для чтения).
MOCУстанавливается в значение, содержащее путь к moc (переменная только для чтения). По умолчанию устанавливается в соответствии со значением USE_QT_VER.
QTCPPFLAGSДополнительные флаги компилятора для инструментального пакета Qt, передаваемые через переменную CONFIGURE_ENV. По умолчанию устанавливается в соответствии со значением USE_QT_VER.
QTCFGLIBSДополнительные флаги компоновки для инструментального пакета Qt, передаваемые через переменную CONFIGURE_ENV. По умолчанию устанавливается в соответствии со значением USE_QT_VER.
QTNONSTANDARDПодавляет изменение CONFIGURE_ENV, CONFIGURE_ARGS, CPPFLAGS и MAKE_ENV.

Таблица 6.8. Дополнительные переменные для портов, использующих Qt 4.x
QT_COMPONENTSУказывает инструменты и библиотеки в качестве зависимостей для Qt 4. Смотрите подробнее ниже.
UICУстанавливает путь к uic (переменная только для чтения).
QMAKEУстанавливает путь к qmake (переменная только для чтения).
QMAKESPECУстанавливает путь к конфигурационному файлу для qmake (переменная только для чтения).

При установленной переменной USE_QT_VER сценарию configure можно передавать некоторые полезные настройки:

CONFIGURE_ARGS+= --with-qt-includes=${QT_PREFIX}/include \ --with-qt-libraries=${QT_PREFIX}/lib \ --with-extra-libs=${LOCALBASE}/lib \ --with-extra-includes=${LOCALBASE}/include CONFIGURE_ENV+= MOC="${MOC}" LIBS="${QTCFGLIBS}" \ QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}" CPPFLAGS+= ${QTCPPFLAGS}

Если переменная USE_QT_VER установлена в значение 4, то также разворачиваются следующие настройки:

CONFIGURE_ENV+= UIC="${UIC}" QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}" MAKE_ENV+= QMAKESPEC="${QMAKESPEC}"

6.9.2. Выбор компонентов (только для Qt 4.x)

Если USE_QT_VER установлена в значение 4, то в переменной QT_COMPONENTS можно указать зависимость от отдельных инструментов и библиотек Qt 4. К каждому компоненту можно добавить суффикс, _build или _run, отражающий, когда должна быть применена зависимость, во время сборки или выполнения, соответственно. Если суффикс отсутствует, зависимость от компонента будет и для времени сборки, и для времени выполнения. Обычно, компоненты библиотек должны указываться без суффиксов, компоненты инструментов - с суффиксом _build, а компоненты плагинов - с суффиксом _run. Наиболее общие используемые компоненты перечислены ниже (все доступные компоненты перечислены в _QT_COMPONENTS_ALL в файле /usr/ports/Mk/bsd.qt.mk):

Таблица 6.9. Доступные библиотечные компоненты Qt 4
НазваниеОписание
corelibосновная библиотека (можно опустить, если порт не использует ничего, кроме corelib)
guiбиблиотека графического пользовательского интерфейса
networkсетевая библиотека
openglбиблиотека OpenGL
qt3supportбиблиотека совместимости с Qt 3
qtestlibбиблиотека модульного тестирования
scriptбиблиотека сценариев
sqlбиблиотека SQL
xmlбиблиотека XML

Вы можете определить, от каких библиотек зависит приложение, запустив ldd на основной исполняемый файл после успешной компиляции.

Таблица 6.10. Доступные компоненты инструментов Qt 4
НазваниеОписание
mocмета-объектный компилятор (нужен при построении почти для каждого приложения Qt)
qmakeгенератор Makefile / утилита построения
rccкомпилятор ресурсов (нужен, если приложение идет вместе с файлами *.rc или *.qrc)
uicкомпилятор пользовательского интерфейса (нужен, если приложение идет вместе с файлами *.ui, созданными при помощи Qt Designer, - на практике каждое приложение Qt с GUI)

Таблица 6.11. Доступные компоненты плагинов Qt 4
НазваниеОписание
iconenginesплагин для движка иконок SVG (если приложение поставляется с иконками SVG)
imageformatsплагины для графических форматов GIF, JPEG, MNG и SVG (если приложение поставляется с графическими файлами)

Пример 6.4. Выбор компонентов Qt 4

В этом примере портированное приложение использует библиотеку графического пользовательского интерфейса Qt 4, основную библиотеку Qt 4, все инструменты генерации кода Qt 4 и генератор Makefile Qt 4. Поскольку библиотека gui подразумевает зависимость от основной библиотеки, указывать corelib нет необходимости. Инструменты генерации кода Qt 4 moc, uic и rcc, а также генератор Makefile qmake нужны только для времени построения, поэтому они указаны с суффиксом _build:

USE_QT_VER= 4 QT_COMPONENTS= gui moc_build qmake_build rcc_build uic_build

6.9.3. Прочие соображения

Если вместе с приложением вместо configure поставляется файл .pro, вы можете использовать следующее:

HAS_CONFIGURE= yes do-configure: @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \ ${QMAKE} PREFIX=${PREFIX} texmaker.pro

Обратите внимание на сходство со строкой qmake из прилагаемого сценария BUILD.sh. Передача CONFIGURE_ENV обеспечивает видимость переменной QMAKESPEC для qmake, без которой команда не может работать. qmake порождает стандартные Makefile, и, таким образом, отпадает необходимость в написании своих собственных целей build.

Приложения Qt часто пишутся в кроссплатформенной манере, и X11/Unix часто не является для них платформой разработки, что в свою очередь часто приводит к соответствующим упущенным моментам:

  • Отсутствующие дополнительные пути для заголовочных файлов. Многие приложения идут с поддержкой иконки в системном трее, но пренебрегают смотреть на наличие заголовочных файлов и/или библиотеками в каталогах X11. Вы можете сообщить qmake, чтобы она добавила каталоги в пути поиска заголовочных файлов и библиотек через командную строку. К примеру:

    ${QMAKE} PREFIX=${PREFIX} INCLUDEPATH+=${LOCALBASE}/include \ LIBS+=-L${LOCALBASE}/lib sillyapp.pro
  • Фиктивные пути установки. Иногда данные, такие как иконки и файлы .desktop, устанавливаются по умолчанию в каталоги, которые не просматриваются XDG-совместимыми приложениями. Примером является editors/texmaker - взгляните на patch-texmaker.pro из каталога files этого порта, который можно взять в качестве шаблона исправления этого непосредственно в файле проекта qmake.

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.