Эта глава описывает статус библиотек wxWidgets в дереве портов и их интеграцию с системой портов.
Существует множество версий библиотек wxWidgets, конфликтующих между собой (устанавливают файлы под тем же именем). В дереве портов эта проблема решена путем установки каждой версии под собственным названием с использованием номера версии в качестве суффикса.
Очевидным недостатком этого является необходимость изменения каждого приложения для нахождения искомой версии. К счастью, большинство приложений для определения нужного компилятора и флагов компоновки вызывают сценарий wx-config. Для каждой доступной версии этот сценарий имеет своё имя. Большинство приложений учитывают переменную окружения или принимают аргумент configure для указания, какой сценарий wx-config следует вызывать. На все остальные приходится накладывать патч.
Для того, чтобы заставить ваш порт использовать конкретную версию wxWidgets, существует две доступные для определения переменные (если определена только одна, то вторая примет значение по умолчанию):
Таблица 6-24. Переменные для выбора версии wxWidgets
Переменная | Описание | Значение по умолчанию |
---|---|---|
USE_WX | Перечень версий, которые порт может использовать | Все доступные версии |
USE_WX_NOT | Перечень версий, которые порт не может использовать | Нет |
Перечень доступных версий wxWidgets и соответствующих им портов в дереве:
Таблица 6-25. Доступные версии wxWidgets
Версия | Порт |
---|---|
2.4 | x11-toolkits/wxgtk24 |
2.6 | x11-toolkits/wxgtk26 |
2.8 | x11-toolkits/wxgtk28 |
Замечание: Версии начиная с 2.5 также поставляются с Unicode и устанавливается подчиненным портом с названием как как у обычного, но с суффиксом -unicode, но этим можно управлять при помощи переменных (смотрите Разд. 6.18.4).
Переменные в Табл. 6-24 можно установить в одну или более следующих комбинаций, разделенных пробелами:
Таблица 6-26. Определение версии для wxWidgets
Описание | Пример |
---|---|
Единичная версия | 2.4 |
Восходящий диапазон | 2.4+ |
Нисходящий диапазон | 2.6- |
Полный диапазон (обязан быть восходящим) | 2.4-2.6 |
Кроме того, существует несколько переменных для выбора предпочитаемых версий из перечня доступных. Они могут быть установлены в несколько версий, первая из которых будет иметь наибольший приоритет.
Существуют другие приложения, которые, хотя и не являются библиотеками wxWidgets, но в тоже время относятся к ним. Эти приложения можно указать в переменной WX_COMPS. Доступны следующие компоненты:
Таблица 6-28. Доступные компоненты wxWidgets
Название | Описание | Ограничение версии |
---|---|---|
wx | основная библиотека | нет |
contrib | сторонние библиотеки | нет |
python | wxPython (привязки к Python) | 2.4-2.6 |
mozilla | wxMozilla | 2.4 |
svg | wxSVG | 2.6 |
Тип добавляемой зависимости при выборе каждого компонента может быть указан вручную путем добавления суффикса, отделенного точкой с запятой. Если таковой отсутствует, но будет использовано значение по умолчанию (смотрите Табл. 6-30). Доступные типы зависимости:
Таблица 6-29. Доступные типы зависимости wxWidgets
Название | Описание |
---|---|
build | Компонент требуется для построения, эквивалентен BUILD_DEPENDS |
run | Компонент требуется для запуска, эквивалентен RUN_DEPENDS |
lib | Компонент требуется для построения и запуска, эквивалентен LIB_DEPENDS |
Значения по умолчанию для компонентов подробно рассматриваются в следующей таблице:
Библиотека wxWidgets поддерживает Unicode начиная с версии 2.5. В дереве портов доступны обе версии и могут быть выбраны с использованием следующих переменных:
Таблица 6-31. Переменные для выбора версии wxWidgets с Unicode
Переменная | Описание | Предназначение |
---|---|---|
WX_UNICODE | Порт работает только с версией Unicode | порт |
WANT_UNICODE | Порт работает с обеими версиями, но предпочитает версию с Unicode | порт |
WITH_UNICODE | Порт будет использовать версию Unicode | пользователь |
WITHOUT_UNICODE | Порт будет использовать обычную версию, если это поддерживается (когда WX_UNICODE не определена) | пользователь |
Внимание: Не используйте WX_UNICODE для портов, которые могут использовать обе версии. Если вы хотите, чтобы порт по умолчанию использовал Unicode, определите вместо этого WANT_UNICODE.
Для обнаружения установленной версии вам необходимо задать переменную WANT_WX. Если вы не присвоите ей определенную версию, то компоненты получат суффикс версии. Переменная HAVE_WX будет заполнена после обнаружения.
Пример 6-8. Обнаружение установленных версий и компонентов wxWidgets
Следующий фрагмент может быть использован в порту, который использует 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-24).
Таблица 6-32. Переменные, определенные для портов, использующих 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.
Пример 6-9. Использование переменных wxWidgets в командах
Следующий фрагмент иллюстрирует использование переменной 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.
Пред. | Начало | След. |
Использование SDL | Уровень выше | Использование Lua |