Qt-5.15.10

Introdução ao Qt5

Qt5 é uma estrutura de aplicação multiplataforma que é amplamente usada para desenvolver software de aplicação com uma Interface Gráfica de Usuário(a) (IGU) (casos nos quais o Qt5 é classificado como um kit de ferramentas de pequena engenhoca) e também usado para desenvolver aplicativos não IGU, como ferramentas de linha de comando e consoles para servidores. Dois dos principais usuários(as) do Qt são KDE Frameworks 5 (KF5) e LXQt.

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

Informação do Pacote

Transferências Adicionais

Dependências do "Qt5"

Exigidas

Bibliotecas do Xorg

Recomendadas

Opcionais

BlueZ-5.68 (para sdpscanner e, em tempo de execução, para o módulo QtConnectivity), GTK+-3.24.38, ibus-1.5.28, libinput-1.23.0, MariaDB-10.11.4 ou MySQL, MIT Kerberos V5-1.21.2, mtdev-1.1.6, pciutils-3.10.0, PostgreSQL-15.4, PulseAudio-16.1, SDL2-2.28.2, unixODBC-2.3.12, assimp, Flite, Firebird, FreeTDS, libproxy, OpenAL, speech-dispatcher, tslib e Vulkan

Observações de Editor(a): https://wiki.linuxfromscratch.org/blfs/wiki/qt5

Configurando o prefixo da instalação

Instalando em "/opt/qt5"

Os(As) editores(as) do BLFS recomendam instalar o "Qt5" em um diretório diferente de "/usr", ou seja, "/opt/qt5". Para fazer isso, configure a seguinte variável de ambiente:

export QT5PREFIX=/opt/qt5
[Dica]

Dica

Ocasionalmente, os caminhos da instalação são rigidamente codificados em arquivos instalados. Essa é a razão pela qual "/opt/qt5" é usado como prefixo da instalação em vez de "/opt/qt-5.15.10". Para criar um diretório versionado do "Qt5" depois que a instalação estiver completa, você pode renomear o diretório e criar um link simbólico:

mkdir -pv /opt/qt-5.15.10
ln -sfnv qt-5.15.10 /opt/qt5

Mais tarde, você possivelmente quera instalar outras versões do "Qt5". Para fazer isso, apenas remova o link simbólico e use "/opt/qt5" como prefixo novamente. Qual versão do "Qt5" você usa depende somente de onde o link simbólico aponta.

[Nota]

Nota

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

Instalação do Qt5

[Atenção]

Atenção

Se o "Qt5" estiver sendo reinstalado no mesmo diretório de uma instância existente, [então] execute os comandos feitos pelo(a) "root", como "make install", a partir de um console ou gerenciador de janelas não baseado em "Qt5". Eles sobrescrevem bibliotecas do "Qt5" 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, [então] examine a saída gerada de "./configure --help" para verificar como desabilitá-las ou usar versões internas incluídas no "tarball" do fonte.

[Nota]

Nota

O tempo de construção, e espaço, exigido para o "Qt5" completo é bastante longo. As instruções abaixo não constroem os tutoriais e exemplos. Remover-se a linha -nomake criará uma construção completa.

[Nota]

Nota

Os(As) editores(as) do BLFS não recomendam a instalação do "Qt5" na hierarquia "/usr" porque fica difícil encontrar componentes e atualizar para uma nova versão. Se você realmente deseja instalar o "Qt5" em "/usr", [então] os diretórios precisam ser especificados explicitamente. Nesse caso, configure "QT5PREFIX=/usr" e adicione o seguinte aos argumentos de configuração abaixo:

            -archdatadir    /usr/lib/qt5                 \
            -bindir         /usr/bin                    \
            -plugindir      /usr/lib/qt5/plugins        \
            -importdir      /usr/lib/qt5/imports        \
            -headerdir      /usr/include/qt5            \
            -datadir        /usr/share/qt5              \
            -docdir         /usr/share/doc/qt5          \
            -translationdir /usr/share/qt5/translations \
            -examplesdir    /usr/share/doc/qt5/examples

Primeiro aplique um remendo para obter as correções selecionadas pelo "KDE" para os aqueles módulos que sejam exigidos pelos pacotes mencionados neste livro:

patch -Np1 -i ../qt-everywhere-opensource-src-5.15.10-kf5-1.patch

O remendo é suposto de ser usado em um repositório "git", porque o comportamento do comando "configure" abaixo é mudado nesse caso. É suficiente criar um diretório ".git" no diretório "qmake", onde o conjunto de comandos sequenciais "configure" seja executado:

mkdir -pv qtbase/.git

Adicione outra correção para construir com GCC-13:

sed -e "/pragma once/a#include <cstdint>"                                      \
    -i qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/geometry.hpp \
       qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/string.hpp   \
       qtlocation/src/3rdparty/mapbox-gl-native/src/mbgl/gl/stencil_mode.hpp

Instale Qt5 executando os seguintes comandos:

./configure -prefix $QT5PREFIX                         \
            -sysconfdir /etc/xdg                      \
            -confirm-license                          \
            -opensource                               \
            -dbus-linked                              \
            -openssl-linked                           \
            -system-harfbuzz                          \
            -system-sqlite                            \
            -nomake examples                          \
            -no-rpath                                 \
            -journald                                 \
            -skip qtwebengine                         &&
make

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

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

make install

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

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

Instale imagens e crie entradas de menu para aplicativos instalados. A variável "QT5BINDIR" é usada aqui para apontar para o diretório dos programas executáveis. Se você tiver mudado o "bindir" acima, [então] "QT5BINDIR" precisará ser ajustada abaixo. Certifique-se de que a variável "QT5BINDIR" esteja definida no ambiente do(a) "root" e como o(a) usuário(a) "root":

QT5BINDIR=$QT5PREFIX/bin

install -v -dm755 /usr/share/pixmaps/                  &&

install -v -Dm644 qttools/src/assistant/assistant/images/assistant-128.png \
                  /usr/share/pixmaps/assistant-qt5.png &&

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

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

install -v -Dm644 qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png \
                  /usr/share/pixmaps/qdbusviewer-qt5.png &&

install -dm755 /usr/share/applications &&

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

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

cat > /usr/share/applications/linguist-qt5.desktop << EOF
[Desktop Entry]
Name=Qt5 Linguist
Comment=Adicionar traduções a aplicativos do Qt5
Exec=$QT5BINDIR/linguist
Icon=linguist-qt5.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-qt5.desktop << EOF
[Desktop Entry]
Name=Qt5 QDbusViewer
GenericName=D-Bus Debugger
Comment=Depurar aplicativos do D-Bus
Exec=$QT5BINDIR/qdbusviewer
Icon=qdbusviewer-qt5.png
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Debugger;
EOF

Alguns pacotes, como o "VLC-3.0.18", procuram por certos executáveis com um sufixo "-qt5". Execute o seguinte comando como o(a) usuário(a) "root" para criar os links simbólicos necessários:

for file in moc uic rcc qmake lconvert lrelease lupdate; do
   ln -sfrvn $QT5BINDIR/$file /usr/bin/$file-qt5
done

Explicações do Comando

sed ...: Permite usar o "Python 3" em vez do "Python 2". Esse comando destrói a construção do "QtWebEngine", de forma que não o use se você remover a chave "-skip qtwebengine".

-confirm-license: Aceita a licença sem avisar o(a) usuário(a) durante a configuração.

-opensource: Instale a versão de fonte aberto do "Qt".

-nomake examples: Essa chave desabilita a construção dos aplicativos de exemplo incluídos no "tarball" do fonte. Remova-a se tu quiseres construí-los.

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

-dbus-linked -openssl-linked: Essas chaves habilitam a vinculação explícita das bibliotecas do "D-Bus" e do "OpenSSL" no "Qt5" em vez de abri-las via "dlopen()".

-journald: Essa chave permite enviar mensagens "Qt" para o sistema de registro "journald".

-skip qtwebengine: Essa chave desabilita a construção do "QtWebEngine". Os(As) editores(as) do BLFS optaram por construir o "qtwebengine-5.15.15" separadamente.

-system-harfbuzz: Essa chave habilita o uso da versão do sistema do "Harfbuzz".

Configurando o Qt5

Informação de Configuração

Se o "Sudo-1.9.14p3" estiver instalado, [então] "QT5DIR" 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 += QT5DIR
EOF

Se você instalou o "Qt5" em "/usr"

Se você instalou o "Qt5" em "/usr", [então] crie uma variável de ambiente necessária para certos pacotes. Como o(a) usuário(a) "root":

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

QT5DIR=/usr
export QT5DIR

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

Se você não instalou o "Qt5" em "/usr"

Se instalou o "Qt5" em um local diferente de "/usr", [então] você necessita atualizar os seguintes arquivos de configuração, de forma que o "Qt5" 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/qt5/lib

# Termina adição do Qt
EOF

ldconfig

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

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

QT5DIR=/opt/qt5

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

export QT5DIR

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

Conteúdo

Aplicativos Instalados: assistant, balsam, canbusutil, designer, fixqt4headers.pl, lconvert, linguist, lprodump, lrelease, lrelease-pro, lupdate, lupdate-pro, meshdebug, moc, pixeltool, qcollectiongenerator, qdbus, qdbuscpp2xml, qdbusviewer, qdbusxml2cpp, qdistancefieldgenerator, qdoc, qgltf, qhelpgenerator, qlalr, qmake, qml, qmlcachegen, qmleasing, qmlformat, qmlimportscanner, qmllint, qmlmin, qmlplugindump, qmlpreview, qmlprofiler, qmlscene, qmltestrunner, qmltime, qmltyperegistrar, qscxmlc, qtattributionscanner, qtdiag, qtpaths, qtplugininfo, qtwaylandscanner, qvkgen, rcc, repc, sdpscanner, syncqt.pl, tracegen, uic, xmlpatterns e xmlpatternsvalidator
Bibliotecas Instaladas: libQt53DAnimation.so, libQt53DCore.so, libQt53DExtras.so, libQt53DInput.so, libQt53DLogic.so, libQt53DQuick.so, libQt53DQuickAnimation.so, libQt53DQuickExtras.so, libQt53DQuickInput.so, libQt53DQuickRender.so, libQt53DQuickScene2D.so, libQt53DRender.so, libQt5AccessibilitySupport.a, libQt5Bluetooth.so, libQt5Bodymovin.so, libQt5Bootstrap.a, libQt5Charts.so, libQt5Concurrent.so, libQt5Core.so, libQt5DataVisualization.so, libQt5DBus.so, libQt5DesignerComponents.so, libQt5Designer.so, libQt5DeviceDiscoverySupport.a, libQt5EdidSupport.a, libQt5EglFSDeviceIntegration.so, libQt5EglFsKmsSupport.so, libQt5EglSupport.a, libQt5EventDispatcherSupport.a, libQt5FbSupport.a, libQt5FontDatabaseSupport.a, libQt5Gamepad.so, libQt5GlxSupport.a, libQt5Gui.so,libQt5Help.so, libQt5InputSupport.a, libQt5KmsSupport.a, libQt5LinuxAccessibilitySupport.a, libQt5Location.so, libQt5Multimedia.so, libQt5MultimediaGstTools.so, libQt5MultimediaQuick.so, libQt5MultimediaWidgets.so, libQt5Network.so, libQt5NetworkAuth.so, libQt5Nfc.so, libQt5OpenGLExtensions.a, libQt5OpenGL.so, libQt5PacketProtocol.a, libQt5PlatformCompositorSupport.a, libQt5Positioning.so, libQt5PositioningQuick.so, libQt5PrintSupport.so, libQt5Purchasing.so, libQt5Qml.so, libQt5QmlDebug.a, libQt5QmlDevTools.a, libQt5QmlModels.so, libQt5QmlWorkerScript.so, libQt5Quick.so, libQt5Quick3D.so, libQt5Quick3DAssetImport.so, libQt5Quick3DRender.so, libQt5Quick3DRuntimeRender.so, libQt5Quick3DUtils.so, libQt5QuickControls2.so, libQt5QuickParticles.so, libQt5QuickShapes.so, libQt5QuickTemplates2.so, libQt5QuickTest.so, libQt5QuickWidgets.so, libQt5RemoteObjects.so, libQt5Script.so, libQt5ScriptTools.so, libQt5Scxml.so, libQt5Sensors.so, libQt5SerialBus.so, libQt5SerialPort.so, libQt5ServiceSupport.a, libQt5Sql.so, libQt5Svg.so, libQt5Test.so, libQt5TextToSpeech.so, libQt5ThemeSupport.a, libQt5UiTools.a, libQt5VirtualKeyboard.so, libQt5WaylandClient.so, libQt5WaylandCompositor.so, libQt5WebChannel.so, libQt5WebSockets.so, libQt5WebView.so, libQt5Widgets.so, libQt5X11Extras.so, libQt5XcbQpa.so, libQt5XkbCommonSupport.a, libQt5Xml.so, libQt5XmlPatterns.so e vários "plugins" sob "/opt/qt5/{plugins,qml}"
Diretórios Instalados: /usr/include/qt5, /usr/lib/qt5, /usr/share/doc/qt5 e /usr/share/qt5 OU /opt/qt5 e /opt/qt-5.15.10

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

fixqt4headers.pl

é um conjunto de comandos sequenciais para substituir todas as inclusões de estilo do "Qt 4" pelas inclusões do "Qt 5"

lconvert

é parte da cadeia de ferramentas "Linguist" do "Qt5". Ela pode ser usada como uma ferramenta independente para converter e filtrar arquivos de dados de tradução

linguist

fornece suporte para tradução de 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

lrelease-pro

extrai informações do projeto a partir de projetos "qmake" e as passa para o "lrelease"

lupdate

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

lupdate-pro

lê um arquivo de projeto do "Qt" e passa as informações coletadas para o "lupdate"

meshdebug

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

moc

gera código de suporte de meta objeto do "Qt"

pixeltool

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

qcollectiongenerator

processa e converte arquivos de ajuda do "Qt"

qdbuscpp2xml

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

qdbus

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

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 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 logiciário

qgltf

importa uma variedade de formatos de modelos 3D e exporta para ativos glTF, otimizados e de carregamento rápido, incorporados em arquivos de recursos do Qt

qhelpgenerator

é uma ferramenta usada para gerar um arquivo comprimido de ajuda do "Qt"

qlalr

é uma ferramenta usada para gerar código a partir de especificações gramaticais

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"

qmlcachegen

suporta a criação de arquivos de "cache" em tempo de construção

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"

qmlimportscanner

é uma ferramenta usada para importar arquivos "QML" a partir de um diretório

qmllint

é um verificador de sintaxe para arquivos "QML"

qmlmin

remove comentários e caracteres de esquema de um arquivo "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 da aplicação estar completa

qmltestrunner

é uma ferramenta usada para fazer testes

qscxml

converte um arquivo "input.scxml" em um arquivo de cabeçalho e "cpp"

qtattributionsscanner

processa arquivos "qt_attribution.json" em fontes do "Qt"

qtdiag

é uma ferramenta para noticiar informações de diagnóstico a respeito do "Qt" e 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"

qtwaylandscanner

converte arquivos de especificações do "Wayland" em cabeçalhos "C++" e código necessário para o "QtWayland"

qvkgen

converte arquivos de especificações do "Vulkan" em cabeçalhos e código "C++"

rcc

é um compilador de recursos usado em conjunto com o projetista

repc

é o "Replica Compiler", que gera arquivos de cabeçalho "QObject" baseados em um arquivo de definição de "API"

sdpscanner

realiza uma varredura do "Session Description Protocol" em um dispositivo remoto, usando o servidor "SDP" representado pelo dispositivo local "Bluetooth"

syncqt.pl

é um conjunto de comandos sequenciais para criar os cabeçalhos de encaminhamento nos diretórios de inclusão. É uma ferramenta interna de desenvolvimento

tracegen

é um gerador de rastreamento para o "LTTng" ou o "ETW"

uic

é um compilador "Qt" de interface de usuário(a)

xmlpatterns

fornece suporte para validação de esquemas "XPath", "XQuery", "XSLT" e "XML"

xmlpatternsvalidator

é uma ferramenta usada para validar documentos "XML"