Introduction à Qt
Qt est un environnement de travail
d'applications multi-plate-forme qui est largement utilisé pour
développer des applications avec une interface utilisateur
graphique (GUI) (dans quelques cas Qt est classé comme une trousse
de widgets), et aussi utilisé pour developper des programmes
non-GUI comme les outils en ligen de commande et les consoles pour
les serveurs. Un des utilisateurs majeurs de Qt est KDE.
Ce paquet est connu pour se construire correctement sur une
plateforme LFS-7.4.
Information sur le paquet
Dépendances de Qt
Requises
ALSA-Library-1.0.27.2 et MesaLib-9.2.0
Recommandées
Certificate Authority
Certificates, D-BUS-1.6.14, GLib-2.36.4,
ICU-51.2 (support de unicode), libjpeg-turbo-1.3.0, libmng-2.0.2, libpng-1.6.4,
LibTIFF-4.0.3, OpenSSL-1.0.1e
et SQLite-3.8.0.2
Facultative
Cups-1.6.3, gtk+-2.24.20 (support des thèmes GTK+ 2),
GStreamer Base
Plug-ins-0.10.36 (pour les vidéos QtWebKit HTML5), MySQL-5.6.13, PostgreSQL-9.3.0, PulseAudio-4.0 unixODBC-2.3.1, et qtchooser-31
(si Qt5 est aussi installé et dans /usr), et unixODBC-2.3.1
Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/qt4
Installation de Qt
Il y a plusieurs façons d'installer un paquet compliqué comme
Qt. Les fichiers ne sont pas
entièrement indépendant de la position. Les procédures
d'installation exécute le programme pkg-config pour déterminer
l'emplacement des paquets, des exécutables, des bibliothèques,
des entêtes et des autres fichiers. Pour Qt, pkg-config regardera les fichiers
lib/pkgconfig/Qt*.pc
appropriés qui
doivent être modifiés si les paquets sont déplacés. Ces
fichiers sont initialisés correctement par le processus de
construction.
L'emplacement des fichiers de l'installation par défaut est
/usr/local/qt/
. Beaucoup de
distributions commerciales placent les fichier dans la hiérarchie
du système /usr
. Le paquet peut
aussi être installé dans un répertoire quelconque.
Le désavantage d'installer dans /usr
est que les noms de fichiers pour les exécutables Qt4 et Qt5
sont en conflit avec d'autres paquets installés dans le même
répertoire. Les instructions dessous donne un contournement pour
ce problème en utilisant un programme d'aide qtchooser-31.
Cela demande de renommer les exécutables Qt avec un suffixe de
version.
L'avantage d'une installation dans /usr
est qu'il n'est pas requis de mettre Ã
jour les fichiers /etc/ld.so.conf
ou
/etc/man_db.conf
. Les fichiers du
paquet sont répartis dans plusieurs sous-répertoires de la
hiérarchie /usr
. C'est la méthode
qu'utilise la plupart des distributions commerciales. C'est
également supporté par l'application facultative qtchooser.
L'avantage d'installer Qt4 dans un
répertoire personnalisé tel que /opt/qt-4.8.5
est que cela laisse tous les
fichiers du paquet rassemblé dans une hiérarchie de répertoires
dédié. En utilisant cette méthode, une mise à jour peut
être faite sans écraser une ancienne installation et les
utilisateurs peuvent facilement retourner vers une ancienne version
en changeant un lien symbolique ou simplement en changeant la
variable PATH. Cela permet également à un développeur de
maintenir plusieurs versions de Qt4 ou Qt5
pour tester.
Attention
Si vous n'installez pas quelques unes des dépendances
recommandées, examinez la sortie de ./configure --help pour
vérifier comment les désactiver ou utiliser les versions
internes livrées avec l'archive des sources.
Avertissement
Si Qt4 doit être réinstallé
dans le même répertoire qu'une précédente installation,
lancez les commandes suivantes depuis une console ou un
gestionnaire de fenêtres non Qt4. Elle écrase les
bibliothèques Qt4 qui ne
devraient pas être utilisées pendant le processus
d'installation.
Note
Le temps et l'espace de construction requis pour tout
Qt4 est considérable. Les
instructions ci-dessous ne construisent pas les tutoriels et les
exemples. La suppression des lignes -nomake
créera une construction
complète.
Méthode 1: Installation dans /usr
Installez Qt4 en lançant les
commandes suivantes
Note
Si Qt5 n'est pas aussi installé dans le
répertoire /usr, modifiez l'entrée pour -bindir dessous en
/usr/bin.
sed -i -e "/#if/d" -e "/#error/d" -e "/#endif/d" \
config.tests/unix/libmng/libmng.cpp &&
./configure -prefix /usr \
-bindir /usr/lib/qt4/bin \
-plugindir /usr/lib/qt4/plugins \
-importdir /usr/lib/qt4/imports \
-headerdir /usr/include/qt4 \
-datadir /usr/share/qt4 \
-sysconfdir /etc/xdg \
-docdir /usr/share/doc/qt4 \
-demosdir /usr/share/doc/qt4/demos \
-examplesdir /usr/share/doc/qt4/examples \
-translationdir /usr/share/qt4/translations \
-confirm-license \
-opensource \
-release \
-dbus-linked \
-openssl-linked \
-system-sqlite \
-no-phonon \
-no-phonon-backend \
-no-nis \
-no-openvg \
-nomake demos \
-nomake examples \
-optimized-qmake &&
make
Ce paquet n'a pas de suite de tests.
Maintenant, en tant qu'utilisateur root
:
make install &&
rm -rf /usr/tests &&
install -v -Dm644 src/gui/dialogs/images/qtlogo-64.png \
/usr/share/pixmaps/qt4logo.png &&
install -v -Dm644 tools/assistant/tools/assistant/images/assistant-128.png \
/usr/share/pixmaps/assistant-qt4.png &&
install -v -Dm644 tools/designer/src/designer/images/designer.png \
/usr/share/pixmaps/designer-qt4.png &&
install -v -Dm644 tools/linguist/linguist/images/icons/linguist-128-32.png \
/usr/share/pixmaps/linguist-qt4.png &&
install -v -Dm644 tools/qdbus/qdbusviewer/images/qdbusviewer-128.png \
/usr/share/pixmaps/qdbusviewer-qt4.png
Effacez les références au répertoire d'installation des fichiers
installés en lançant les commandes suivantes en tant
qu'utilisateur root
:
for file in 3Support CLucene Core DBus Declarative DesignerComponents \
Designer Gui Help Multimedia Network OpenGL Script \
ScriptTools Sql Svg Test UiTools WebKit XmlPatterns Xml
do
sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' \
/usr/lib/libQt${file}.prl
perl -pi -e "s, -L$PWD/?\S+,,g" /usr/lib/pkgconfig/Qt${file}.pc
done
unset file
Si vous installez aussi Qt5 dans /usr, créez un lien symbolique
entre les exécutables Qt4 dans
/usr/bin
en lançant les commandes
suivantes en tant qu'utilisateur root
:
for file in /usr/lib/qt4/bin/*
do
ln -sfv ../lib/qt4/bin/$(basename $file) /usr/bin/$(basename $file)-qt4
done
Méthode 2: Installation dans /opt/qt-4.8.5
Cette partie fournit une façon alternative d'installer Qt4 en
installant la plus part des fichiers dans le répertoire
/opt
. Cela permet de gérer tous les
fichiers relatifs à Qt4 dans un endroit. Par exemple, une
nouvelle version de Qt4 peut être installée sans écraser
l'installation existante et une instance entière de Qt4 peut
facilement être supprimée. Cependant, cela à le
désavantage de demander quelques configurations supplémentaires.
Installez Qt dans /opt/qt-4.8.5 en
lançant les commendes suivantes:
sed -i -e "/#if/d" -e "/#error/d" -e "/#endif/d" \
config.tests/unix/libmng/libmng.cpp &&
export QTDIR=/opt/qt-4.8.5
./configure -prefix $QTDIR \
-sysconfdir /etc/xdg \
-confirm-license \
-opensource \
-release \
-dbus-linked \
-openssl-linked \
-system-sqlite \
-plugin-sql-sqlite \
-no-phonon \
-no-phonon-backend \
-no-nis \
-no-openvg \
-nomake demos \
-nomake examples \
-optimized-qmake &&
make
Maintenant, en tant qu'utilisateur root
:
make install &&
ln -svfn qt-$VERSION /opt/qt &&
install -v -Dm644 src/gui/dialogs/images/qtlogo-64.png \
/usr/share/pixmaps/qt4logo.png &&
install -v -Dm644 tools/assistant/tools/assistant/images/assistant-128.png \
/usr/share/pixmaps/assistant-qt4.png &&
install -v -Dm644 tools/designer/src/designer/images/designer.png \
/usr/share/pixmaps/designer-qt4.png &&
install -v -Dm644 tools/linguist/linguist/images/icons/linguist-128-32.png \
/usr/share/pixmaps/linguist-qt4.png &&
install -v -Dm644 tools/qdbus/qdbusviewer/images/qdbusviewer-128.png \
/usr/share/pixmaps/qdbusviewer-qt4.png
Enlevez les références au répertoire de construction dans les
fichiers installés en lançant la commande suivante en tant
qu'utilisateur root
:
for file in 3Support CLucene Core DBus Declarative DesignerComponents \
Designer Gui Help Multimedia Network OpenGL Script \
ScriptTools Sql Svg Test UiTools WebKit XmlPatterns Xml; do
sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' \
$QTDIR/lib/libQt${file}.prl
perl -pi -e "s, -L$PWD/?\S+,,g" $QTDIR/lib/pkgconfig/Qt${file}.pc
done
unset file
Explications des commandes
sed -i "..." ...:
Cette commande corrige la détection de libmng 2.0.
-confirm-license
: Accepte
la licence sans le demander à l'utilisateur pendant la
configuration.
-opensource
: Installe la
version libre de Qt.
-release
: Ce paramètre
désactive la construction avec les symboles de débogage.
-nomake examples -nomake
demos
: Ces paramètres désactivent la construction de
programmes qui n'ont d'intérêt que pour un développeur
Qt.
-system-sqlite
: Ce
paramètre active l'utilisation de la version du système de
SQLite.
-no-nis
: Ce paramètre
désactive le support de Network Information Service (NIS,
service d'informations réseau) qui a été déprécié dans la
version récente de Glibc.
-no-phonon
-no-phonon-backend
: Ces paramètres désactivent la
construction de la bibliothèque Phonon fournie. Une meilleure version est
fournie par le paquet phonon-4.6.0.
-dbus-linkend
-openssl-linkend
: Ces paramètres activent la liaison
explicites des bibliothèques D-Bus et OpenSSL dans les biblothèques Qt au lieu de les dlopen()-nés.
-no-openvg
: Ce paramètre
désactive le support de OpenVG
dans Qt.
-optimized-qmake
: Ce
paramètre active la construction du programme optimisé
qmake.
Configuration de Qt
Informations de
configuration
Si vous avez installé Qt dans
/usr, créez une variable d'environnement nécessaire pour
certain paquets. En tant qu'utilisateur root
:
cat > /etc/profile.d/qt.sh << EOF
# Begin /etc/profile.d/qt.sh
QTDIR=/usr
export QTDIR
# End /etc/profile.d/qt.sh
EOF
Si vous avez installé Qt dans
un endroit autre que /usr, vous devez mettre à jour les
fichiers de configuration suivant pour que Qt soit correctement trouvé par les autres
paquets et les processus du système.
En tant qu'utilisateur root
,
mettez à jour le fichier /etc/ld.so.conf
et le fichier de cache du lieur
dynamique d'exécution:
cat >> /etc/ld.so.conf << EOF
# Begin Qt addition
/opt/qt/lib
# End Qt addition
EOF
ldconfig
En tant qu'utilisateur root
,
créez le fichier /etc/profile.d/qt.sh
:
cat > /etc/profile.d/qt.sh << EOF
# Begin /etc/profile.d/qt.sh
QTDIR=/opt/qt
pathappend /opt/qt/bin PATH
pathappend /opt/qt/lib/pkgconfig PKG_CONFIG_PATH
export QTDIR
# End /etc/profile.d/qt.sh
EOF
Pour toutes les méthodes, créez des entrées de menu pour les
applications installées. En tant qu'utilisateur root
:
install -dm755 /usr/share/applications
cat > /usr/share/applications/qtconfig-qt4.desktop << "EOF"
[Desktop Entry]
Name=Qt4 Config
Comment=Configure Qt4 behavior, styles, fonts
Exec=qtconfig-qt4
Icon=qt4logo
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Settings;
EOF
cat > /usr/share/applications/assistant-qt4.desktop << "EOF"
[Desktop Entry]
Name=Qt4 Assistant
Comment=Shows Qt4 documentation and examples
Exec=assistant-qt4
Icon=assistant-qt4
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Documentation;
EOF
cat > /usr/share/applications/designer-qt4.desktop << "EOF"
[Desktop Entry]
Name=Qt4 Designer
Comment=Design GUIs for Qt4 applications
Exec=designer-qt4
Icon=designer-qt4
MimeType=application/x-designer;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;
EOF
cat > /usr/share/applications/linguist-qt4.desktop << "EOF"
[Desktop Entry]
Name=Qt4 Linguist
Comment=Add translations to Qt4 applications
Exec=linguist-qt4
Icon=linguist-qt4
MimeType=text/vnd.trolltech.linguist;application/x-linguist;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;
EOF
cat > /usr/share/applications/qdbusviewer-qt4.desktop << "EOF"
[Desktop Entry]
Name=Qt4 QDbusViewer
GenericName=D-Bus Debugger
Comment=Debug D-Bus applications
Exec=qdbusviewer-qt4
Icon=qdbusviewer-qt4
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Debugger;
EOF