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 часто не является для них платформой разработки, что в свою очередь часто приводит к соответствующим упущенным моментам:

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