Эта глава описывает статус библиотек wxWidgets в дереве портов и их интеграцию с системой портов.
Существует множество версий библиотек wxWidgets, конфликтующих между собой (устанавливают файлы под тем же именем). В дереве портов эта проблема решена путем установки каждой версии под собственным названием с использованием номера версии в качестве суффикса.
Очевидным недостатком этого является необходимость
изменения каждого приложения для нахождения искомой версии.
К счастью, большинство приложений для определения нужного
компилятора и флагов компоновки вызывают сценарий
wx-config
. Для каждой доступной версии
этот сценарий имеет своё имя. Большинство приложений
учитывают переменную окружения или принимают аргумент
configure для указания, какой сценарий
wx-config
следует вызывать. На все
остальные приходится накладывать патч.
Для того, чтобы заставить ваш порт использовать конкретную версию wxWidgets, существует две доступные для определения переменные (если определена только одна, то вторая примет значение по умолчанию):
Переменная | Описание | Значение по умолчанию |
---|---|---|
USE_WX | Перечень версий, которые порт может использовать | Все доступные версии |
USE_WX_NOT | Перечень версий, которые порт не может использовать | Нет |
Перечень доступных версий wxWidgets и соответствующих им портов в дереве:
Версия | Порт |
---|---|
2.4 | x11-toolkits/wxgtk24 |
2.6 | x11-toolkits/wxgtk26 |
2.8 | x11-toolkits/wxgtk28 |
Версии начиная с 2.5
также
поставляются с Unicode и устанавливается подчиненным портом
с названием как как у обычного, но с суффиксом
-unicode
, но этим можно управлять при
помощи переменных (смотрите
Раздел 6.19.4, <
Переменные в Таблица 6.25, <<Переменные для выбора версии wxWidgets>> можно установить в одну или более следующих комбинаций, разделенных пробелами:
Описание | Пример |
---|---|
Единичная версия | 2.4 |
Восходящий диапазон | 2.4+ |
Нисходящий диапазон | 2.6- |
Полный диапазон (обязан быть восходящим) | 2.4-2.6 |
Кроме того, существует несколько переменных для выбора предпочитаемых версий из перечня доступных. Они могут быть установлены в несколько версий, первая из которых будет иметь наибольший приоритет.
Название | Предназначение |
---|---|
WANT_WX_VER | порт |
WITH_WX_VER | пользователь |
Существуют другие приложения, которые, хотя и не являются
библиотеками wxWidgets, но в тоже
время относятся к ним. Эти приложения можно указать в
переменной WX_COMPS
. Доступны следующие
компоненты:
Название | Описание | Ограничение версии |
---|---|---|
wx | основная библиотека | нет |
contrib | сторонние библиотеки | нет |
python | wxPython (привязки к Python) | 2.4-2.6 |
mozilla | wxMozilla | 2.4 |
svg | wxSVG | 2.6 |
Тип добавляемой зависимости при выборе каждого компонента может быть указан вручную путем добавления суффикса, отделенного точкой с запятой. Если таковой отсутствует, но будет использовано значение по умолчанию (смотрите Таблица 6.31, <<Типы зависимости wxWidgets, используемые по умолчанию>>). Доступные типы зависимости:
Название | Описание |
---|---|
build | Компонент требуется для построения, эквивалентен
BUILD_DEPENDS |
run | Компонент требуется для запуска, эквивалентен
RUN_DEPENDS |
lib | Компонент требуется для построения и запуска,
эквивалентен LIB_DEPENDS |
Значения по умолчанию для компонентов подробно рассматриваются в следующей таблице:
Компонент | Тип зависимости |
---|---|
wx | lib |
contrib | lib |
python | run |
mozilla | lib |
svg | lib |
Следующий фрагмент относится к порту, в котором
используется wxWidgets версии
2.4
с его сторонними
библиотеками.
USE_WX= 2.4 WX_COMPS= wx contrib
Библиотека wxWidgets
поддерживает Unicode начиная с версии 2.5
.
В дереве портов доступны обе версии и могут быть выбраны с
использованием следующих переменных:
Переменная | Описание | Предназначение |
---|---|---|
WX_UNICODE | Порт работает только с версией Unicode | порт |
WANT_UNICODE | Порт работает с обеими версиями, но предпочитает версию с Unicode | порт |
WITH_UNICODE | Порт будет использовать версию Unicode | пользователь |
WITHOUT_UNICODE | Порт будет использовать обычную версию, если это
поддерживается (когда WX_UNICODE
не определена) | пользователь |
Не используйте WX_UNICODE
для
портов, которые могут использовать обе версии. Если вы
хотите, чтобы порт по умолчанию использовал Unicode,
определите вместо этого
WANT_UNICODE
.
Для обнаружения установленной версии вам необходимо
задать переменную WANT_WX
. Если вы не
присвоите ей определенную версию, то компоненты получат
суффикс версии. Переменная HAVE_WX
будет
заполнена после обнаружения.
Следующий фрагмент может быть использован в порту, который использует wxWidgets, в случае если он установлен или выбран соответствующий параметр.
WANT_WX= yes .include <bsd.port.pre.mk> .if defined(WITH_WX) || !empty(PORT_OPTIONS:MWX) || !empty(HAVE_WX:Mwx-2.4) USE_WX= 2.4 CONFIGURE_ARGS+= --enable-wx .endif
Следующий фрагмент может быть использован в порту,
который задействует поддержку
wxPython, в случае если он
установлен или выбран соответствующий параметр, в
дополнение к wxWidgets, обе
версии 2.6
.
USE_WX= 2.6 WX_COMPS= wx WANT_WX= 2.6 .include <bsd.port.pre.mk> .if defined(WITH_WXPYTHON) || !empty(PORT_OPTIONS:MWXPYTHON) || !empty(HAVE_WX:Mpython) WX_COMPS+= python CONFIGURE_ARGS+= --enable-wxpython .endif
Следующие переменные доступны в порту (после определения одной из переменных из Таблица 6.25, <<Переменные для выбора версии wxWidgets>>).
Название | Описание |
---|---|
WX_CONFIG | Путь к сценарию
wxWidgets
wx-config (с другим
именем) |
WXRC_CMD | Путь к программе
wxWidgets
wxrc (с другим именем) |
WX_VERSION | Версия wxWidgets,
которая будет использоваться (например,
2.6 ) |
WX_UNICODE | Если не определена, но Unicode будет использоваться, то она будет определена |
Если вам нужно использовать переменные для запуска команд
сразу после подключения bsd.port.pre.mk
,
то вам нужно определить WX_PREMK
.
Если вы определите WX_PREMK
, то
версия, зависимости, компоненты и заданные переменные не
изменяться, в случае вы изменили переменные порта
wxWidgets
после подключения
bsd.port.pre.mk
.
Следующий фрагмент иллюстрирует использование
переменной WX_PREMK
посредством запуска
сценария wx-config
для получения строки
с полной версией с присвоением ее переменной и передачей в
программу.
USE_WX= 2.4 WX_PREMK= yes .include <bsd.port.pre.mk> .if exists(${WX_CONFIG}) VER_STR!= ${WX_CONFIG} --release PLIST_SUB+= VERSION="${VER_STR}" .endif
Переменные wxWidgets можно
безопасно использовать в командах внутри целей без
необходимости в использовании
WX_PREMK
.
Некоторые сценарии GNU configure
не
могут найти wxWidgets только с
установленной переменной окружения
WX_CONFIG
, требуя дополнительные
параметры. Для их передачи можно использовать переменную
WX_CONF_ARGS
.
WX_CONF_ARGS
Возможное значение | Получаемый параметр |
---|---|
absolute | --with-wx-config=${WX_CONFIG} |
relative | --with-wx=${LOCALBASE}
--with-wx-config=${WX_CONFIG:T} |
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.