6.21. Usando wxWidgets

Esta seção descreve o status das bibliotecas wxWidgets na árvore de ports e sua integração com o sistema de ports.

6.21.1. Introdução

Existem muitas versões das bibliotecas do wxWidgets que entram em conflito entre elas (instalam arquivos com o mesmo nome). Na árvore de ports este problema foi resolvido instalando cada versão sob um nome diferente usando sufixos de número de versão.

A desvantagem óbvia disso é que cada aplicativo precisa ser modificado para encontrar a versão esperada. Felizmente, a maioria dos aplicativos chama o script wx-config para determinar os sinalizadores necessários para o compilador e o vinculador. O script é nomeado de maneira diferente para cada versão disponível. A maioria dos aplicativos respeita uma variável de ambiente ou aceita um argumento de configuração para especificar o script wx-config que deve ser chamado. Caso contrário, eles têm que ser corrigidos.

6.21.2. Seleção de Versão

Para fazer o port usar uma versão específica do wxWidgets existem duas variáveis disponíveis para definir (se apenas uma for definida, a outra será definida para um valor padrão):

Tabela 6.30. Variáveis ​​para Selecionar as Versões do wxWidgets
VariávelDescriçãoValor padrão
USE_WXLista de versões que o port pode usarTodas as versões disponíveis
USE_WX_NOTLista de versões que o port não pode usarNenhum

As versões disponíveis do wxWidgets e os ports correspondentes na árvore são:

Tabela 6.31. Versões Disponíveis do wxWidgets

As variáveis ​​em Tabela 6.30, “Variáveis ​​para Selecionar as Versões do wxWidgets podem ser definidas para uma ou mais dessas combinações separadas por espaços:

Tabela 6.32. Especificações de Versão do wxWidgets
DescriçãoExemplo
Versão única2.8
Range ascendente2.8+
Range descendente3.0-
Range total (deve ser crescente)2.8-3.0

Também existem algumas variáveis ​​para selecionar as versões preferidas entre as disponíveis. Elas podem ser configuradas para uma lista de versões, as primeiras terão maior prioridade.

Tabela 6.33. Variáveis para selecionar as versões preferidas do wxWidgets
NomeDesenhado para
WANT_WX_VERo port
WITH_WX_VERo usuário

6.21.3. Seleção de Componentes

Existem outras aplicações que, apesar de não serem bibliotecas wxWidgets, estão relacionadas a eles. Estas aplicações podem ser especificadas em WX_COMPS. Estes componentes estão disponíveis:

Tabela 6.34. Componentes wxWidgets Disponíveis
NomeDescriçãoRestrição de versão
wxbiblioteca principalnenhum
contribbibliotecas contribuídasnone
pythonwxPython(ligações Python)2.8-3.0

O tipo de dependência pode ser selecionado para cada componente, adicionando-se um sufixo separado por um ponto-e-vírgula. Se não estiver presente, será usado um tipo padrão (veja Tabela 6.36, “Tipos de Dependência Padrão do wxWidgets). Estes tipos estão disponíveis:

Tabela 6.35. Tipos de Dependências wxWidgets Disponíveis
NomeDescrição
buildComponente é necessário para a compilação, equivalente a BUILD_DEPENDS
runO componente é necessário para execução, equivalente a RUN_DEPENDS
libO componente é necessário para a compilação e execução, equivalente a LIB_DEPENDS

Os valores padrão para os componentes estão detalhados nesta tabela:

Tabela 6.36. Tipos de Dependência Padrão do wxWidgets
ComponenteTipo de dependência
wxlib
contriblib
pythonrun
mozillalib
svglib

Exemplo 6.25. Selecionando Componentes wxWidgets

Este fragmento corresponde a um port que usa wxWidgets versão 2.4 e suas bibliotecas contribuídas.

USE_WX=		2.8
WX_COMPS=	wx contrib

6.21.4. Detectando Versões Instaladas

Para detectar uma versão instalada, defina WANT_WX. Se não estiver definido para uma versão específica, os componentes terão um sufixo de versão. O HAVE_WX será preenchido após a detecção.

Exemplo 6.26. Detectando as versões instaladas wxWidgets e seus componentes

Este fragmento pode ser usado em um port que usa wxWidgets se estiver instalado ou uma opção estiver selecionada.

WANT_WX=	yes

.include <bsd.port.pre.mk>

.if defined(WITH_WX) || !empty(PORT_OPTIONS:MWX) || !empty(HAVE_WX:Mwx-2.8)
USE_WX=			2.8
CONFIGURE_ARGS+=	--enable-wx
.endif

Este fragmento pode ser usado em um port que permite suporte ao wxPython se ele estiver instalado ou se uma opção for selecionada, em adição ao wxWidgets, ambas nas versões 2.8.

USE_WX=		2.8
WX_COMPS=	wx
WANT_WX=	2.8

.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.21.5. Variáveis ​​Definidas

Estas variáveis ​​estão disponíveis no port (depois de definir uma de Tabela 6.30, “Variáveis ​​para Selecionar as Versões do wxWidgets).

Tabela 6.37. Variáveis ​​definidas para ports que usam wxWidgets
NomeDescrição
WX_CONFIGO caminho para o script wxWidgets wx-config (com nome diferente)
WXRC_CMDO caminho para o programa wxWidgets wxrc (com nome diferente)
WX_VERSIONA versão do wxWidgets que será usada (por exemplo,2.6)

6.21.6. Processando em bsd.port.pre.mk

Defina WX_PREMK para ser capaz de usar as variáveis ​​logo após a inclusão do bsd.port.pre.mk.

Importante:

Ao definir WX_PREMK, a versão, dependências, componentes e variáveis ​​definidas não serão alteradas mesmo se alterado as variáveis ​​do port wxWidgets depois de incluir o bsd.port.pre.mk.

Exemplo 6.27. Usando Variáveis ​​nos Comandos wxWidgets

Este fragmento ilustra o uso de WX_PREMK executando o script wx-config para obter a string de versão completa, atribuí-lo a uma variável e passá-lo para o programa.

USE_WX=		2.8
WX_PREMK=	yes

.include <bsd.port.pre.mk>

.if exists(${WX_CONFIG})
VER_STR!=	${WX_CONFIG} --release

PLIST_SUB+=	VERSION="${VER_STR}"
.endif

Nota:

As variaveis wxWidgets ​​podem ser usadas com segurança em comandos quando estão dentro de targets sem a necessidade de WX_PREMK.

6.21.7. Argumentos Adicionais do configure

Alguns scripts GNU configure não podem encontrar wxWidgets com apenas o conjunto de variáveis ​​de ambiente WX_CONFIG, exigindo argumentos adicionais. WX_CONF_ARGS pode ser usado para fornecê-los.

Tabela 6.38. Valores Legais para WX_CONF_ARGS
Valor possívelArgumento resultante
absolute--with-wx-config=${WX_CONFIG}
relative--with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T}

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.