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>.