6.12. Usando o Qt

Nota:

Para ports que fazem parte do Qt, veja Seção 17.76, “qt-dist.

6.12.1. Ports que requerem o Qt

A coleção de ports fornece suporte para o Qt 5 com USES+=qt:5. Configure o USE_QT para a lista de componentes obrigatórios do Qt (bibliotecas, ferramentas, plugins).

O framework Qt exporta um número de variáveis ​​que podem ser usadas por ports, algumas delas listadas abaixo:

Tabela 6.12. Variáveis ​​Fornecidas aos Ports Que Usam o Qt
QMAKECaminho completo para o binário qmake.
LRELEASECaminho completo para utilitário Irelease.
MOCCaminho completo para moc.
RCCCaminho completo para rcc.
UICCaminho completo para uic.
QT_INCDIRDiretório include Qt.
QT_LIBDIRCaminho das bibliotecas Qt.
QT_PLUGINDIRCaminho de plugins do Qt.

6.12.2. Seleção de Componentes

As dependências individuais das ferramentas e da biblioteca Qt devem ser especificadas em USE_QT. Todo componente pode ser sufixado com _build ou _run, o sufixo indica se a dependência no componente está no tempo de compilação ou no tempo de execução. Se um sufixo não for usado, a dependência do componente será tanto em tempo de compilação quanto em tempo de execução. Geralmente, os componentes da biblioteca são especificados como unsuffixed, os componentes das ferramentas são especificados com o sufixo _build e os componentes dos plugins são especificados com o sufixo _run. Os componentes mais comumente usados estão listados abaixo (todos os componentes disponíveis estão listados em _USE_QT_ALL e _USE_QT5_ONLY em /usr/ports/Mk/Uses/qt.mk):

Tabela 6.13. Componentes da Biblioteca Qt Disponíveis
NomeDescrição
3dMódulo Qt3D
assistantNavegador de documentação do Qt 5
canvas3dMódulo Qt canvas3d
chartsMódulo de gráficos Qt 5
concurrentMódulo multi-threading Qt
connectivityMódulo de conectividade Qt (Bluetooth/NFC)
coreMódulo não-gráfico do núcleo Qt
datavis3dMódulo de visualização de dados 3D Qt 5
dbusMódulo de comunicação entre processos Qt D-Bus
declarativeFramework declarativo Qt para interfaces dinâmicas de usuário
designerDesigner gráfico de interface de usuário do Qt 5
diagFerramenta para relatar informações de diagnóstico sobre o Qt e seu ambiente
docDocumentação do Qt 5
examplesCódigo-fonte dos exemplos do Qt 5
gamepadMódulo de Gamepad Qt 5
graphicaleffectsEfeitos gráficos rápidos do Qt
guiMódulo de interface gráfica do usuário do Qt
helpMódulo de integração de ajuda on-line do Qt
l10nMensagens localizadas do Qt
linguistFerramenta de tradução do Qt 5
locationMódulo de localização do Qt
multimediaMódulo de suporte de áudio, vídeo, rádio e câmera do Qt
networkMódulo de rede do Qt
networkauthMódulo de autenticação de rede do Qt
openglMódulo de suporte OpenGL compatível com o Qt 5
pathsCliente de linha de comando para QStandardPaths
phonon4Framework de multimídia do KDE
pixeltoolLupa de tela do Qt 5
plugininfoDumper de metadados do plugin Qt5
printsupportMódulo de suporte de impressão do Qt
qdbusInterface de linha de comando do Qt para o D-Bus
qdbusviewerInterface gráfica do Qt 5 para o D-Bus
qdocGerador de documentação do Qt
qdoc-dataArquivos de configuração do QDoc
qevFerramenta de introspecção de eventos Qt QWidget
qmakeGerador de Makefile do Qt
quickcontrolsConjunto de controles para construir interfaces completas no Qt Quick
quickcontrols2Conjunto de controles para construir interfaces completas no Qt Quick
remoteobjectsMódulo SXCML Qt5
scriptMódulo de script compatível com Qt 4
scripttoolsComponentes adicionais do Qt Script
scxmlMódulo SXCML Qt5
sensorsMódulo de sensores do Qt
serialbusFunções do Qt para acessar sistemas de bus industriais
serialportFunções do Qt para acessar portas seriais
speechRecursos de acessibilidade para o Qt5
sqlMódulo de integração a banco de dados SQL do Qt
sql-ibasePlugin de banco de dados InterBase/Firebird do Qt
sql-mysqlPlugin de banco de dados MySQL do Qt
sql-odbcPlugin Qt para conectividade Open Database
sql-pgsqlPlugin de banco de dados do PostgreSQL do Qt
sql-sqlite2Plugin de banco de dados SQLite 2 do Qt
sql-sqlite3Plugin de banco de dados SQLite 3 do Qt
sql-tdsPlugin de conectividade ao banco de dados TDS do Qt
svgMódulo de suporte SVT do Qt
testlibMódulo de teste unitário do Qt
uipluginInterface de plug-in do Qt widget personalizado para o Qt Designer
uitoolsMódulo de suporte a formulários de interface de usuário do Qt Designer
virtualkeyboardMódulo de teclado virtual do Qt 5
waylandQt5 wrapper para o Wayland
webchannelBiblioteca Qt 5 para integração de C++/QML com clientes HTML/js
webengineBiblioteca Qt 5 para renderizar conteúdo da web
webkitQtWebKit com uma base de código WebKit mais moderna
websocketsImplementação do protocolo WebSocket do Qt
websockets-qmlImplementação do protocolo WebSocket do Qt (QML bindings)
webviewComponente do Qt para exibir o conteúdo da web
widgetsMódulo de widgets C++ do Qt
x11extrasRecursos específicos da plataforma Qt para sistemas baseados em X11
xmlImplementações SAX e DOM do Qt
xmlpatternsSuporte do Qt para XPath, XQuery, XSLT e XML Schema

Para determinar as bibliotecas das quais um aplicativo depende, execute o ldd no executável principal após uma compilação bem sucedida.

Tabela 6.14. Componentes Disponíveis da Ferramenta Qt
NomeDescrição
buildtoolsFerramentas de compilação (moc, rcc), necessária para quase todas as aplicações do Qt.
linguisttoolsferramentas de localização: Irelease, lupdate
qmakeUtilitário gerador/compilador de Makefile

Tabela 6.15. Componentes Disponíveis de Plugin Qt
NomeDescrição
imageformatsplugins para formatos de imagem TGA, TIFF e MNG

Exemplo 6.20. Selecionando Componentes do Qt 5

Neste exemplo, o aplicativo portado usa a biblioteca de interface gráfica do usuário do Qt 5, a biblioteca principal do Qt 5, todas as ferramentas de geração de código do Qt 5 e o gerador de Makefile do Qt 5. Uma vez que a biblioteca gui implica na dependência da biblioteca principal, o core não precisa ser especificado. As ferramentas de geração de código do Qt 5 moc, uic e rcc, bem como o gerador de Makefile qmake são necessários apenas em tempo de compilação, assim eles são especificados com o sufixo _build:

USES=	qt:5
USE_QT=	gui buildtools_build qmake_build

6.12.3. Usando qmake

Se o aplicativo fornecer um arquivo de projeto qmake (*.pro), defina USES=qmake junto com USE_QTx. Observe que USES=qmake já implica uma dependência de compilação no qmake, portanto, o componente qmake pode ser omitido de USE_QT. Igual ao CMake, o qmake suporta compilações out-of-source, que podem ser ativadas especificando o argumento outsource (verUSES=qmakeexemplo) .

Tabela 6.16. Argumentos Possíveis para USES= qmake
VariávelDescrição
no_configureNão adicione o target configure. Isso é implícito pelo HAS_CONFIGURE=yes e GNU_CONFIGURE=yes. Isso é requerido quando a compilação apenas precisa do ambiente de setup do USES= qmake, e dessa forma, executa-se o qmake por si próprio.
no_envSuprime modificações dos ambientes configure e make. É necessário somente quando qmake é usado para configurar o software e a compilação falha em entender a configuração do ambiente pelo USES= qmake.
norecursiveNão passe o argumento -recursive para o qmake.
outsourceRealiza uma compilação out-of-source.

Tabela 6.17. Variáveis ​​para Ports Que Usam o qmake
VariávelDescrição
QMAKE_ARGSFlags específicas do port qmake a serem passadas para o binario do qmake.
QMAKE_ENVVariáveis ​​de ambiente a serem definidas para o binario qmake. O padrão é ${CONFIGURE_ENV}.
QMAKE_SOURCE_PATHCaminho para os arquivos de projeto do qmake (.pro). O padrão é ${WRKSRC} se uma compilação out-of-source for solicitada, caso contrário, deixe em branco.

Ao usar USES= qmake, estas configurações são implementadas:

CONFIGURE_ARGS+=	--with-qt-includes=${QT_INCDIR} \
			--with-qt-libraries=${QT_LIBDIR} \
			--with-extra-libs=${LOCALBASE}/lib \
			--with-extra-includes=${LOCALBASE}/include

CONFIGURE_ENV+=	QTDIR="${QT_PREFIX}" QMAKE="${QMAKE}" \
		MOC="${MOC}" RCC="${RCC}" UIC="${UIC}" \
		QMAKESPEC="${QMAKESPEC}"

PLIST_SUB+=	QT_INCDIR=${QT_INCDIR_REL} \
		QT_LIBDIR=${QT_LIBDIR_REL} \
		QT_PLUGINDIR=${QT_PLUGINDIR_REL}

Alguns scripts de configuração não suportam os argumentos acima. Para suprimir a modificação de CONFIGURE_ENV e CONFIGURE_ARGS defina USES= qmake:no_env.

Exemplo 6.21. Exemplo USES= qmake

Este trecho demonstra o uso do qmake para um port Qt 5:

USES=	qmake:outsource qt:5
USE_QT=	buildtools_build

Aplicações Qt são frequentemente escritas para serem multi-plataforma e muitas vezes o X11/Unix não é a plataforma em que são desenvolvidas, o que por sua vez leva a certas pontas soltas, como:

  • Faltam caminhos de inclusão adicionais. Muitos aplicativos vêm com suporte ao ícone da bandeja do sistema, mas não buscam inclusões e/ou bibliotecas nos diretórios do X11. Para adicionar diretórios aos includes e bibliotecas de pesquisa do qmake através da linha de comando, use:

    QMAKE_ARGS+=	INCLUDEPATH+=${LOCALBASE}/include \
    		LIBS+=-L${LOCALBASE}/lib
  • Caminhos falsos de instalação. Às vezes, dados como ícones ou arquivos .desktop são instalados por padrão em diretórios que não são verificados por aplicativos compatíveis com XDG. O editors/texmaker é um exemplo disso - veja patch-texmaker.pro no diretório de arquivos desse port para um modelo sobre como remediar isso diretamente no arquivo de projeto qmake.

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