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

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

Таблица 6.8. Переменные для портов, использующих Qt
USE_QT4Указывает инструменты и библиотеки в качестве зависимостей для портов, которые используют Qt 4. Для получения подробностей смотрите выбор компонентов Qt 4.
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.9. Дополнительные переменные для портов, использующих Qt 4.x
UICУстанавливает путь к uic (переменная только для чтения).
QMAKEУстанавливает путь к qmake (переменная только для чтения).
QMAKESPECУстанавливает путь к конфигурационному файлу для qmake (переменная только для чтения).
QMAKEFLAGSДополнительные флаги для qmake.
QT_INCDIRУстанавливает каталоги для заголовков Qt 4 (переменная только для чтения).
QT_LIBDIRУстанавливает путь к библиотекам Qt 4 (переменная только для чтения).
QT_PLUGINDIRCУстанавливает путь к плагинам Qt 4 (переменная только для чтения).

При заданной переменной USE_QT4 применяются следующие настройки:

CONFIGURE_ARGS+=	--with-qt-includes=${QT_INCDIR} \
			--with-qt-libraries=${QT_LIBDIR} \
			--with-extra-libs=${LOCALBASE}/lib \
			--with-extra-includes=${LOCALBASE}/include
CONFIGURE_ENV+=	MOC="${MOC}" UIC="${UIC}" LIBS="${QTCFGLIBS}" \
		QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}" QTDIR="${QT_PREFIX}"
MAKE_ENV+=	QMAKESPEC="${QMAKESPEC}"

PLIST_SUB+=	QT_INCDIR_REL=${QT_INCDIR_REL} \
		QT_LIBDIR_REL=${QT_LIBDIR_REL} \
		QT_PLUGINDIR_REL=${QT_PLUGINDIR_REL}

6.10.2. Выбор компонентов

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

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

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

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

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

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

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

USE_QT4=	gui moc_build qmake_build rcc_build uic_build

6.10.3. Использование qmake

Таблица 6.13. Переменные для портов, использующих qmake
НазваниеОписание
QMAKE_ARGSСпефицичные для порта флаги QMake для передачи программе qmake.
QMAKE_ENVПеременные окружения, устанавливаемые для программы qmake. По умолчанию соответствует значению ${CONFIGURE_ENV}.
QMAKE_PROНазвание файла проекта .pro. По умолчанию имеет пустое значение (с использованием автоопределения).

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

USES=	qmake
USE_QT4=	qmake_build

USES=qmake указывает порту на использование qmake в процессе конфигурации. Обратите внимание, что USES=qmake не подразумевает зависимость от Qt 4 qmake. Для этого в значении USE_QT4 должен присутствовать компонент qmake_build.

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

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

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

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

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

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