Qt-6.7.2

Introdução ao Qt6

Qt6 é uma estrutura de aplicação multiplataforma que é amplamente usada para desenvolver software de aplicação com uma interface gráfica de usuário(a) (GUI) (nesses casos Qt6 é classificado como um kit de ferramentas de pequena engenhoca) e também usado para desenvolver aplicativos não GUI, como ferramentas de linha de comando e consoles para servidores.

Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.2.

Informação do Pacote

Dependências do Qt6

Exigidas

Bibliotecas do Xorg

Recomendadas

Opcionais

BlueZ-5.77 (para sdpscanner e, em tempo de execução, para módulo QtConnectivity), GTK+-3.24.43, ibus-1.5.30, MariaDB-10.11.8 ou MySQL, MIT Kerberos V5-1.21.3, pciutils-3.13.0, PostgreSQL-16.4, PulseAudio-17.0, SDL2-2.30.6, unixODBC-2.3.12, assimp, Flite, Firebird, FreeTDS, libproxy, OpenAL, speech-dispatcher e tslib

Configurando o prefixo de instalação

Instalando em /opt/qt6

Os(As) editores(as) do BLFS recomendam instalar o Qt6 em um diretório diferente de /usr, ou seja, /opt/qt6. Isso é necessário para evitar conflitos com o Qt5. Para fazer isso, configure a seguinte variável de ambiente:

export QT6PREFIX=/opt/qt6
[Dica]

Dica

Ocasionalmente, os caminhos de instalação estão rigidamente codificados nos arquivos instalados. Essa é a razão pela qual /opt/qt6 é usado como prefixo de instalação em vez de /opt/qt-6.7.2. Para criar um diretório versionado do Qt6, você pode renomear o diretório e criar um link simbólico:

mkdir -pv /opt/qt-6.7.2
ln -sfnv qt-6.7.2 /opt/qt6

Mais tarde, você pode querer instalar outras versões do Qt6. Para fazer isso, basta remover o link simbólico, criar o novo diretório versionado e recriar o link simbólico /opt/qt6 novamente antes de construir a nova versão. Qual versão do Qt6 você usa depende somente de onde o link simbólico aponta.

[Nota]

Nota

Se qca-2.3.9 tiver sido instalado e você estiver reinstalando ou atualizando esse pacote, então qca precisará ser reinstalado.

Instalação do Qt6

[Atenção]

Atenção

Se Qt6 estiver sendo reinstalado no mesmo diretório que uma instância existente, execute os comandos feitos por root, como make install, a partir de um console ou gerenciador de janelas não baseado em Qt6. Ele sobrescreve bibliotecas do Qt6 que não deveriam estar em uso durante o processo de instalação.

[Cuidado]

Cuidado

Se você não instalou alguma das dependências recomendadas, examine a saída gerada de ./configure --help para verificar como desabilitá-las ou para usar versões internas incluídas no tarball do fonte.

[Nota]

Nota

O tempo de construção e o espaço exigidos para o Qt6 completo são bastante longos. As instruções abaixo não constroem os tutoriais e exemplos. Remover a linha -nomake criará recursos adicionais.

[Nota]

Nota

Os(As) editores(as) do BLFS não recomendam instalar o Qt6 na hierarquia /usr porque se torna difícil encontrar componentes e atualizar para uma nova versão. Existem também alguns programas que conflitam com aqueles instalados pelo Qt5.

Desabilite uma declaração conflitante em sistemas i686:

if [ "$(uname -m)" == "i686" ]; then
    sed -e "/^#elif defined(Q_CC_GNU_ONLY)/s/.*/& \&\& 0/" \
        -i qtbase/src/corelib/global/qtypes.h
fi

Instale Qt6 executando os seguintes comandos:

./configure -prefix $QT6PREFIX      \
            -sysconfdir /etc/xdg    \
            -dbus-linked            \
            -openssl-linked         \
            -system-sqlite          \
            -nomake examples        \
            -no-rpath               \
            -journald               \
            -skip qt3d              \
            -skip qtquick3dphysics  \
            -skip qtwebengine       \
            -W no-dev               &&
ninja

Esse pacote não vem com uma suíte de teste.

Agora, como o(a) usuário(a) root:

ninja install

Remova referências ao diretório de construção dos arquivos de dependência da biblioteca instalada (prl) executando o seguinte comando como o(a) usuário(a) root:

find $QT6PREFIX/ -name \*.prl \
   -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;

Instale imagens e crie as entradas de menu para aplicativos instalados. Novamente como o(a) usuário(a) root:

pushd qttools/src &&

install -v -Dm644 assistant/assistant/images/assistant-128.png       \
                  /usr/share/pixmaps/assistant-qt6.png               &&

install -v -Dm644 designer/src/designer/images/designer.png          \
                  /usr/share/pixmaps/designer-qt6.png                &&

install -v -Dm644 linguist/linguist/images/icons/linguist-128-32.png \
                  /usr/share/pixmaps/linguist-qt6.png                &&

install -v -Dm644 qdbus/qdbusviewer/images/qdbusviewer-128.png       \
                  /usr/share/pixmaps/qdbusviewer-qt6.png             &&
popd &&


cat > /usr/share/applications/assistant-qt6.desktop << EOF
[Desktop Entry]
Name=Qt6 Assistant
Comment=Mostra documentação e exemplos do Qt6
Exec=$QT6PREFIX/bin/assistant
Icon=assistant-qt6.png
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Documentation;
EOF

cat > /usr/share/applications/designer-qt6.desktop << EOF
[Desktop Entry]
Name=Qt6 Designer
GenericName=Interface Designer
Comment=Projeta GUIs para aplicativos Qt6
Exec=$QT6PREFIX/bin/designer
Icon=designer-qt6.png
MimeType=application/x-designer;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;
EOF

cat > /usr/share/applications/linguist-qt6.desktop << EOF
[Desktop Entry]
Name=Qt6 Linguist
Comment=Adiciona traduções a aplicativos Qt6
Exec=$QT6PREFIX/bin/linguist
Icon=linguist-qt6.png
MimeType=text/vnd.trolltech.linguist;application/x-linguist;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;
EOF

cat > /usr/share/applications/qdbusviewer-qt6.desktop << EOF
[Desktop Entry]
Name=Qt6 QDbusViewer
GenericName=D-Bus Debugger
Comment=Depura aplicativos D-Bus
Exec=$QT6PREFIX/bin/qdbusviewer
Icon=qdbusviewer-qt6.png
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Debugger;
EOF

Explicações do Comando

-nomake examples: Essa chave desabilita construir os programas de exemplo incluídos no tarball do fonte. Remova-a se você quiser construí-los.

-skip qt3d: Essa chave desabilita construir suporte ao qt3d. Existe um problema ao construir esses arquivos sem uma biblioteca externa e nenhum pacote no BLFS usa qt3d.

-system-sqlite: Essa chave habilita uso da versão do sistema do SQLite.

-dbus-linked -openssl-linked: Essas chaves habilitam vinculação explícita das bibliotecas D-Bus e OpenSSL nas bibliotecas do Qt6 em vez de abri-las com dlopen().

-journald: Essa chave permite enviar mensagens do QT para o sistema de registro journald.

-skip qtwebengine: Essa chave desabilita construir o QtWebEngine. Os(As) editores(as) do BLFS optaram por construir qtwebengine-6.7.2 separadamente.

-skip qtquick3dphysics: Essa chave desabilita construir o submódulo Quick 3D Physics do Qt. Em sistemas de 32 bits, isso fará com que o processo de construção falhe com um erro embutido na cópia agrupada do SDK PhysX do Qt6.

Configurando Qt6

Informação de Configuração

Se Sudo-1.9.15p5 estiver instalado, QT6DIR também deveria estar disponível para o(a) superusuário(a). Execute os seguintes comandos como o(a) usuário(a) root:

cat > /etc/sudoers.d/qt << "EOF"
Defaults env_keep += QT6DIR
EOF

Agora você precisa atualizar os seguintes arquivos de configuração, de forma que o Qt6 seja encontrado corretamente por outros pacotes e processos do sistema.

Como o(a) usuário(a) root, atualize o arquivo /etc/ld.so.conf e o arquivo de cache de tempo de execução do vinculador dinâmico:

cat >> /etc/ld.so.conf << EOF
# Inicia adição do Qt

/opt/qt6/lib

# Termina adição do Qt
EOF

ldconfig

Como o(a) usuário(a) root, crie o arquivo /etc/profile.d/qt6.sh:

cat > /etc/profile.d/qt6.sh << "EOF"
# Inicia /etc/profile.d/qt6.sh

QT6DIR=/opt/qt6

pathappend $QT6DIR/bin           PATH
pathappend $QT6DIR/lib/pkgconfig PKG_CONFIG_PATH

export QT6DIR

# Termina /etc/profile.d/qt6.sh
EOF

Conteúdo

Aplicativos Instalados: androiddeployqt (link rígido para androiddeployqt6), androiddeployqt6, androidtestrunner, assistant, balsam, balsamui, canbusutil, cooker, designer, instancer, lconvert, linguist, lrelease, lupdate, materialeditor, meshdebug, pixeltool, qdbus, qdbuscpp2xml, qdbusviewer, qdbusxml2cpp, qdistancefieldgenerator, qdoc, qmake (link rígido para qmake6), qmake6, qml, qmldom, qmleasing, qmlformat, qmllint, qmlls, qmlplugindump, qmlpreview, qmlprofiler, qmlscene, qmltc, qmltestrunner, qmltime, qqem, qsb, qtdiag (link rígido para qtdiag6), qtdiag6, qtpaths (link rígido para qtpaths6), qtpaths6, qtplugininfo, qt-cmake, qt-cmake-create, qt-configure-module, shadergen e shapegen
Bibliotecas Instaladas: libQt6Bluetooth.so, libQt6Bodymovin.so, libQt6BundledEmbree.a, libQt6BundledPhysX.a, libQt6BundledResonanceAudio.a, libQt6Charts.so, libQt6ChartsQml.so, libQt6Coap.so, libQt6Concurrent.so, libQt6Core.so, libQt6Core5Compat.so, libQt6DBus.so, libQt6DataVisualization.so, libQt6DataVisualizationQml.so, libQt6DeclarativeOpcua.so, libQt6Designer.so, libQt6DesignerComponents.so, libQt6DeviceDiscoverySupport.a, libQt6EglFSDeviceIntegration.so, libQt6EglFsKmsGbmSupport.so, libQt6EglFsKmsSupport.so, libQt6ExampleIcons.a, libQt6FbSupport.a, libQt6Graphs.so, libQt6Grpc.so, libQt6Gui.so, libQt6Help.so, libQt6HttpServer.so, libQt6InputSupport.a, libQt6JsonRpc.so, libQt6KmsSupport.a, libQt6LabsAnimation.so, libQt6LabsFolderListModel.so, libQt6LabsQmlModels.so, libQt6LabsSettings.so, libQt6LabsSharedImage.so, libQt6LabsWavefrontMesh.so, libQt6LanguageServer.so, libQt6Location.so, libQt6Mqtt.so, libQt6Multimedia.so, libQt6MultimediaQuick.so, libQt6MultimediaWidgets.so, libQt6Network.so, libQt6NetworkAuth.so, libQt6Nfc.so, libQt6OpcUa.so, libQt6OpenGL.so, libQt6OpenGLWidgets.so, libQt6PacketProtocol.a, libQt6Positioning.so, libQt6PositioningQuick.so, libQt6PrintSupport.so, libQt6Protobuf.so, libQt6Qml.so, libQt6QmlCompiler.so, libQt6QmlCore.so, libQt6QmlDebug.a, libQt6QmlDom.a, libQt6QmlLocalStorage.so, libQt6QmlLS.a, libQt6QmlModels.so, libQt6QmlToolingSettings.a, libQt6QmlTypeRegistrar.a, libQt6QmlWorkerScript.so, libQt6QmlXmlListModel.so, libQt6Quick.so, libQt6Quick3D.so, libQt6Quick3DAssetImport.so, libQt6Quick3DAssetUtils.so, libQt6Quick3DEffects.so, libQt6Quick3DGlslParser.so, libQt6Quick3DHelpers.so, libQt6Quick3DHelpersImpl.so, libQt6Quick3DIblBaker.so, libQt6Quick3DParticleEffects.so, libQt6Quick3DParticles.so, libQt6Quick3DPhysics.so, libQt6Quick3DPhysicsHelpers.so, libQt6Quick3DRuntimeRender.so, libQt6Quick3DSpatialAudio.so, libQt6Quick3DUtils.so, libQt6QuickControls2.so, libQt6QuickControls2Impl.so, libQt6QuickControlsTestUtils.a, libQt6QuickDialogs2.so, libQt6QuickDialogs2QuickImpl.so, libQt6QuickDialogs2Utils.so, libQt6QuickEffects.so, libQt6QuickLayouts.so, libQt6QuickParticles.so, libQt6QuickShapes.so, libQt6QuickTemplates2.so, libQt6QuickTest.so, libQt6QuickTestUtils.a, libQt6QuickTimeline.so, libQt6QuickWidgets.so, libQt6RemoteObjects.so, libQt6RemoteObjectsQml.so, libQt6Scxml.so, libQt6ScxmlQml.so, libQt6Sensors.so, libQt6SensorsQuick.so, libQt6SerialBus.so, libQt6SerialPort.so, libQt6ShaderTools.so, libQt6SpatialAudio.so, libQt6Sql.so, libQt6StateMachine.so, libQt6StateMachineQml.so, libQt6Svg.so, libQt6SvgWidgets.so, libQt6TextToSpeech.so, libQt6UiTools.so, libQt6VirtualKeyboard.so, libQt6WaylandClient.so, libQt6WaylandCompositor.so, libQt6WaylandEglClientHwIntegration.so, libQt6WaylandEglCompositorHwIntegration.so, libQt6WebChannel.so, libQt6WebChannelQuick.so, libQt6WebSockets.so, libQt6WebView.so, libQt6WebViewQuick.so, libQt6Widgets.so, libQt6WlShellIntegration.so, libQt6XcbQpa.so e libQt6Xml.so
Diretórios Instalados: /opt/qt6 e /opt/qt-6.7.2

Descrições Curtas

assistant

é uma ferramenta para apresentação de documentação on-line

balsam

é uma ferramenta para converter cenas 3D originárias de várias ferramentas de criação para o formato QML, para uso pela nova biblioteca 3D QtQuick

canbustil

é uma ferramenta para lidar com quadros arbitrários do barramento CAN. Uma Controller Area Network (CAN) é um padrão de veículo de barramento projetado para permitir que microcontroladores e dispositivos se comuniquem entre si em aplicações sem um computador anfitrião

designer

é um construtor de GUI completo. Ele inclui recursos poderosos, como modo de visualização prévia, esquema automático de pequena engenhoca, suporte para pequenas engenhocas personalizadas e um avançado editor de propriedades

lconvert

faz parte da cadeia de ferramentas Linguist do Qt6. Ele pode ser usado como uma ferramenta independente para converter e filtrar arquivos de dados de tradução

linguist

fornece suporte para traduzir aplicativos para idiomas locais

lrelease

é uma ferramenta simples de linha de comando. Ela lê arquivos de tradução baseados em XML, no formato TS, e produz arquivos de mensagens usados pelo aplicativo

lupdate

encontra as sequências de caracteres traduzíveis nos arquivos especificados de interface do fonte, cabeçalho e do Designer do Qt e armazena as mensagens extraídas em arquivos de tradução para serem processadas pelo lrelease

meshdebug

exibe informações a respeito de arquivos de malha do qtquick-3d

pixeltool

é um ampliador de área de trabalho - conforme você move teu mouse pela tela, ele mostrará o conteúdo ampliado na janela dele

qdbus

lista serviços disponíveis, caminhos de objetos, métodos, sinais e propriedades de objetos em um barramento

qdbuscpp2xml

pega um arquivo de fonte do C++ e gera uma definição XML do D-Bus da interface

qdbusviewer

é um navegador gráfico do D-Bus

qdbusxml2cpp

é uma ferramenta que pode ser usada para analisar descrições de interfaces e produzir código estático representando essas interfaces,

qdistancefieldgenerator

permite que um cache de fontes seja pré gerado para Text.QtRendering para acelerar uma inicialização de um aplicativo se a interface de usuário(a) tiver muito texto, ou múltiplas fontes, ou uma grande quantidade de caracteres distintos, por exemplo, em sistemas de escrita CJK

qdoc

é uma ferramenta usada por Desenvolvedores(as) do Qt para gerar documentação para projetos de software

qmake

usa informações armazenadas em arquivos de projeto para determinar o que deveria constar nos arquivos make que ele gera

qml

executa um arquivo QML

qmleasing

é uma ferramenta usada para definir as curvas de atenuação usando um editor interativo de curva

qmlformat

formata arquivos QML de acordo com as convenções de codificação QML

qmllint

é um verificador de sintaxe para arquivos QML

qmlplugindump

é uma ferramenta para criar um arquivo qmltypes

qmlpreview

é uma ferramenta usada para analisar aplicativos QML

qmlprofiler

é uma ferramenta que monitora arquivos QML e JavaScript no disco e atualiza o aplicativo ao vivo com quaisquer mudanças

qmlscene

é um utilitário que carrega e exibe documentos QML, mesmo antes que o aplicativo esteja completo

qmltestrunner

é uma ferramenta usada para fazer testes

qtdiag

é uma ferramenta para noticiar informações de diagnóstico a respeito do Qt e do ambiente dele

qtpaths

é uma ferramenta para consultar informações de caminho do Qt

qtplugininfo

despeja metadados a respeito dos plugins do Qt em formato JSON