1. Installer Qt5.15.2, installer Poppler et le driver MySQL sous Mac OSX
3. Installer poppler
Il faut d'abord installer homebrew, gestionnaires de paquets pour MacOS pour cela, dans le terminal du Mac, exécuter la commande
Pour l’utiliser dans Qt5, ajouter dans le fichier .pro : OSX { INCLUDEPATH += /usr/local/opt/poppler-qt5/include/poppler/qt5 LIBS += -L/usr/local/opt/poppler-qt5/lib/ -lpoppler-qt5 }
4. Compiler le driver MySQL (inutile si la version de Qt est antérieure à Qt 5.10)
Pour compiler le driver MySQL, se rendre dans le dossier où se situent les sources des drivers SQL -> ~/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers
Bon, si ça ne marche pas, vous pouvez éviter de vous passer les pieds et télécharger la lib sur ce lien libqsqlmysql.dylib puis la copier directement dans /Users/votrenomdutilisateur/Qt/5.15.2/clang_64/plugins/sqldrivers |
2. Créer un executable Rufus.dmg, à partir de la compilation sous mac - Install_name_tool et macdeployqt
Bravo! Vous avez enfin réussi à compiler Rufus, qui marche parfaitement bien. Seulement voilà, quand vous copiez votre programme Rufus sur un autre Mac, ça ne marche pas. C'est normal, tout n'est pas fini. Rufus a en effet besoin de librairies pour fonctionner parfaitement, librairies qu'il va chercher un peu partout sur le disque dur de votre ordinateur et s'il ne les trouve pas, il ne démarre pas. Une des libraires sert à communiquer avec la base de données MySQL, une autre, poppler, à afficher les documents pdf (courriers, ordonnances). Il faut donc incorporer ces librairies dans le programme pour pouvoir réaliser un package Rufus.dmg totalement autonome, que vous pourrez installer sur n'importe quel Mac. On va donc avoir besoin d'un premier outil, Macdeployqt, fourni dans le package Qt, et se trouvant dans le répertoire /Users/votrenomdutilisateur/Qt/5.10/clang_64/bin de votre Mac. Macdeployqt gère l'incorporation des librairies indispensables au fonctionnement du logiciel dans le package. Ces librairies ont parfois besoin elles-mêmes d'autres librairies que macdeployqt va donc aussi incorporer. A - Dans un premier temps, après avoir compilé le programme dans le dossier Applications du Mac, il vous faut retirer du package Qt les librairies SQL qui vont entraver le déploiement de Rufus. Pour cela, dans le dossier /Users/votrenomdutilisateur/Qt/5.10/clang_64/plugins/sqldrivers retirez toutes les librairies sql qui ne sont pas dédiées à mysql (dont le nom ne contient pas mysql) c'est à dire les libraires obdc, sqllite et sqlpsql. Puis, dans le terminal, taper la commande macdeployqt /Applications/Rufus.App Ce qui aura pour effet d'incorporer dans le package Rufus, tout un tas de librairies essentielles à son fonctionnement, en créant 2 sous-dossiers dans le dossier Rufus/Contents/, le dossier Frameworks et le dossier Plugins. Pour voir le contenu du package Rufus -> clic droit sur le nom du programme dans le Finder et choisir "Afficher le contenu du paquet" B - Enfin, macdeployqt fait parfois quelques erreurs et conserve les liens de recherche des librairies secondaires vers leur emplacement sur le disque dur de l'ordinateur hôte et pas vers leur emplacement dans le package. Sur un poste développeur, cela ne pose pas de problème puisque ces librairies sont en général placées au bon endroit par les langages de développement au moment de leur installation mais sur un poste naïf qui n'héberge pas ces librairies secondaires, le programme ne fonctionnera pas, les librairies primaires continuant à chercher les secondaires sur le disque dur de l'ordinateur hôte et pas dans le package. install_name_tool est un outil logiciel fourni avec Xcode qui permet de gérer les dépendances entre librairies et de corriger les liens erronés utilisés par macdeployqt dans le package d'installation du logiciel. Exemple, dans le terminal, la commande otool (otool est l'utilitaire qui permet de visualiser les liens des librairies) suivante otool -L /applications/rufus.app/Contents/Plugins/sqldrivers/libqsqlmysql.dylib affiche la liste des dépendances de la libraire libqsqlmysql.dylib située dans /applications/rufus.app/Contents/Plugins/sqldrivers |
/applications/rufus.app/Contents/Plugins/sqldrivers/libqsqlmysql.dylib:
@executable_path/../Plugins/sqldrivers/libqsqlmysql.dylib (compatibility version 0.0.0, current version 0.0.0) @rpath/QtSql.framework/Versions/5/QtSql (compatibility version 5.10.0, current version 5.10.0) @rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.10.0, current version 5.10.0) /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib (compatibility version 20.0.0, current version 20.0.0) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1) |
on voit que la lib libmysqlclient.18.dylib est directement linkée sur le disque dur du poste vers le chemin /opt/local/lib/mysql55/mysql/ et non dans le package. Le programme ne démarrera donc pas si ce fichier n'existe pas à cet emplacement là (ce qui bien sûr n'arrive jamais, sauf si vous l'y avez expressément copié), même s'il est pourtant présent dans le package.
+++ les chemins /usr/lib et /System/Library/ sont des chemins protégés du mac et contiennent toujours les lib demandées par le package. Il ne faut pas en tenir compte. Il faut donc faire la manip otool pour chaque lib contenue dans le package et corriger les erreurs de liens pour chacune. Pour Rufus, cette erreur peut se produire pour : . les dépendances de libs contenues dans rufus/Contents/Frameworks, à savoir freetype, libpoppler-qt5.1.dylib et libopenjp2, libmysqlclient.20.dylib. . la dépendance de libsqlmysql.dylib, contenue dans rufus/Contents/Plugins/sqldrivers
Ces dépendances sont bien installées dans le package mais sont linkées sur le disque dur. Exemple: la lib libmysqlclient.18.dylib est correctement placée par mqcdeployqt dans le dossier rufus/Contents/Frameworks mais n'est donc pas appelée correctement par libsqlmysql.dylib qui la cherche sur le disque dur de la machine à /opt/local/lib/mysql55/mysql/.Le programme install_tool_name va donc permettre de corriger ça. La manip se déroule en 2 temps |
La commande est install_name_tool -id @executable_path/../Frameworks/libmysqlclient.18.dylib /Applications/Rufus.app/Contents/Frameworks/libmysqlclient.18.dylib
doit être remplacé par /Applications/Rufus.app/Contents/Plugins/sqldrivers/libqsqlmysql.dylib pour @executable_path/../Frameworks/libmysqlclient.18.dylib On utilise le modificateur -change et la commande est install_name_tool -change /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib @executable_path/../Frameworks/libmysqlclient.18.dylib /Applications/Rufus.app/Contents/PlugIns/sqldrivers/libqsqlmysql.dylib C - Bien, à partir de là, votre package fonctionne et est autonome. Il ne reste plus qu'à en générer une forme comprimée et autoinstallable, le fichier Rufus.dmg C'est la partie la plus simple de ce chapitre. Il suffit maintenant de taper dans le Terminal, la commande macdeployqt /Applications/Rufus.App -dmg Si vous avez bien suivi toute cette fastidieuse manip, le fichier rufus.dmg que vous venez de générer peut installer Rufus sur n'importe quel Mac sans installation préalable de quoi que ce soit |
3. Installer Qt 5.15.2, Poppler et le driver MariaDB sous Linux Ubuntu
1. installer Qt5.15.2 et le compilateur c++
- 1. avec l'installateur (avec un pc intel ou amd ou un mac)
- Ouvrir le terminal
- Il faut en premier lieu mettre à jour les dépôts
- sudo apt-get update
- puis
- sudo apt-get upgrade
- puis installer les compilateurs C et C++ la librairie libxcb-xinerama0 sans laquelle l'installateur de Qt ne peut pas se lancer
- sudo apt-get install build-essential libgl1-mesa-dev libxcb-xinerama0 libxcb-cursor0
- puis télécharger l'installateur online de Qt à la page www.qt.io/download-qt-installer
L'adressse peut varier en fonction des saisons
Taper Download Qt Online Installer dans le moteur de recherche si ça ne marche pas
Lancer l'installeur que vous venez de télécharger (un nom ressemblant à qt-unified-linux-x64-4.6.1-online.run - ne pas oublier d'autoriser l'éxécution du fichier comme un programme -> clic droit sur le nom du fichier - onglet Permissions - cocher la case autoriser l'éxécution du fichier comme un programme) et, si ce n'est pas déjà fait, créer un compte Qt sinon vous ne pourrez pas aller plus loin.
Dans l'installateur, choisir installation personnalisée et cocher EXACTEMENT toutes les cases cochées sur la capture d'écran ci-dessous
- 2. Qt en ligne de commande (avec un raspberry)
- dans le terminal
sudo apt-get install qtmultimedia5-dev libqt5multimediawidgets5 libqt5multimedia5-plugins libqt5multimedia5 libqt5serialport5-dev (ces libs permettent l'affichage de videos et la gestion des ports séries indispensables à la connection des appareils de réfraction)
2. Installer Poppler
- Il faut maintenant installer Poppler
3 . Installer le driver MariaDB pour Qt 5.15.2
debian.pkgs.org/11/debian-main-amd64/libqt5sql5-mysql_5.15.2+dfsg-9_amd64.deb.html
sur le même site, on trouve les autres versions de cette lib en fonction de la version de qt5 installée
On peut aussi la télécharger directement ici libqsqlmysql.so pour Qt5.15.2
Décomprimer le paquet télécharger ("Extraire" dans le menu contextuel), décomprimer les paquets obtenus de la même façon,
jusqu'à ce qu'on trouve la lib puis la copier dans le dossier ~/Qt/5.15.2/gcc_64/plugins/sqldrivers
- sudo apt-get install libmariadb-dev
debian.pkgs.org/11/debian-main-amd64/libqt5sql5-mysql_5.15.2+dfsg-9_amd64.deb.html
sur le même site, on trouve les autres versions de cette lib en fonction de la version de qt5 installée
On peut aussi la télécharger directement ici libqsqlmysql.so pour Qt5.15.2
Décomprimer le paquet télécharger ("Extraire" dans le menu contextuel), décomprimer les paquets obtenus de la même façon,
jusqu'à ce qu'on trouve la lib puis la copier dans le dossier ~/Qt/5.15.2/gcc_64/plugins/sqldrivers
- cp /emplacementdelalib/libqsqlmysql.so ~/Qt/5.15.2/gcc_64/plugins/sqldrivers
4. cannot find -lpulse - uniquement sur un pc classique ou un mac sous Ubuntu
sudo ln -s /usr/lib/x86_64-linux-gnu/libpulse-mainloop-glib.so.0 /usr/lib/x86_64-linux-gnu/libpulse-mainloop-glib.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libpulse-mainloop-glib.so.0 /usr/lib/arm-linux-gnueabihf/libpulse-mainloop-glib.so
5. installer Zeal (facultatif)
6. installer capture d'écran sur raspberry (facultatif)
- Il arrive que le compilateur bloque parce qu'il ne trouve pas certaines librairies
- Cela arrive par exemple pour la librairie libpulse
- Une version de cette librairie se trouve dans /usr/lib/x86_64-linux-gnu sous le nom libpulse.so.0
- Si on tape la commande
- On retrouve la liste des noms et des dossiers où cette librairie est recherchée et /usr/lib/x86_64-linux-gnu/libpulse.so.0 n'y figure pas
- Il faut donc créer un nouveau lien symbolique pour cette lib et une autre lib, libpulse-mainloop-glib, avec les lignes suivantes
- sur un ordinateur x86
sudo ln -s /usr/lib/x86_64-linux-gnu/libpulse-mainloop-glib.so.0 /usr/lib/x86_64-linux-gnu/libpulse-mainloop-glib.so
- sur un raspberry et une version 32 bits d'Ubuntu
sudo ln -s /usr/lib/x86_64-linux-gnu/libpulse-mainloop-glib.so.0 /usr/lib/arm-linux-gnueabihf/libpulse-mainloop-glib.so
5. installer Zeal (facultatif)
- Zeal est un utilitaire quasi-indispensable pour le développeur qui vous permet d'accéder off-lin à toutes les documentations des outils de développement les plus répandus, y compris Qt, C++ et MySQL.
6. installer capture d'écran sur raspberry (facultatif)
- screen shooter est un utilitaire permettant de faire des captures d'écran.
4. Créer un exécutable Rufus.Appimage, à partir de la compilation sous Ubuntu - linuxdeployqt
mis à jour le 13 février 2024
Linuxdeployqt nécessite une machine fonctionnant sous la plus ancienne version supportéée d'Ubuntu. Au 31 décembre 2023, il s'agit de la version 20.04.
Linuxdeployqt nécessite une machine fonctionnant sous la plus ancienne version supportéée d'Ubuntu. Au 31 décembre 2023, il s'agit de la version 20.04.
"A note on binary compatibility
To produce binaries that are compatible with many target systems, build on the oldest still-supported build system. The oldest still-supported release of Ubuntu is currently targeted, tested and supported by the team.
We recommend to target the oldest still-supported Ubuntu LTS release and build your applications on that. If you do this, the resulting binaries should be able to run on newer (but not older) systems (Ubuntu and other distributions).
We do not support linuxdeployqt on systems newer than the oldest Ubuntu LTS release, because we want to encourage developers to build applications in a way that makes them possible to run on all still-supported distribution releases. "
depuis la page github du projet linuxdeployqt github.com/probonopd/linuxdeployqt#a-note-on-binary-compatibility
To produce binaries that are compatible with many target systems, build on the oldest still-supported build system. The oldest still-supported release of Ubuntu is currently targeted, tested and supported by the team.
We recommend to target the oldest still-supported Ubuntu LTS release and build your applications on that. If you do this, the resulting binaries should be able to run on newer (but not older) systems (Ubuntu and other distributions).
We do not support linuxdeployqt on systems newer than the oldest Ubuntu LTS release, because we want to encourage developers to build applications in a way that makes them possible to run on all still-supported distribution releases. "
depuis la page github du projet linuxdeployqt github.com/probonopd/linuxdeployqt#a-note-on-binary-compatibility
- Bravo! Vous vous êtes bien battu avec Ubuntu, Qt, MySQL et Poppler et vous avez enfin réussi à compiler Rufus, qui marche parfaitement bien.
Il va donc vous falloir un programme autonome, à partir de ce fichier.
C'est normal, tout n'est pas fini.
Rufus a en effet besoin de librairies pour fonctionner parfaitement, librairies qu'il va chercher un peu partout sur le disque dur de votre ordinateur et s'il ne les trouve pas, il ne démarre pas.
Une des libraires sert à communiquer avec la base de données MySQL, une autre, poppler, à afficher les documents pdf (courriers, ordonnances).
Il faut donc incorporer ces librairies dans le programme pour pouvoir réaliser un package Rufus.Appimage totalement autonome, que vous pourrez installer sur n'importe quel poste Ubuntu.
On va donc avoir besoin d'un outil, linuxdeployqt. Linuxdeployqt est hébergé sur GitHub à cette adresse et vous pouvez le télécharger en cliquant sur ce lien
github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage.
Linuxdeployqt gère l'incorporation des librairies indispensables au fonctionnement du logiciel dans le package.
Pour pouvoir lancer linuxdeployqt, il faut rendre le programme exécutable. Pour cela, une fois que linuxdeployqt a été téléchargé, clic droit sur l'icône du programme, choisir propriétés, puis onglet Permissions et cocher la case Autoriser l'exécution du fichier comme un programme.
1. Méthode la plus simple
Pour créer une appimage Rufus automatiquement
- Rajouter le chemin vers les lib Qt dans le .profile
- nano ~/.profile
- puis rajouter les lignes suivantes, en bas du fichier
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/Qt/n°versionQT/gcc_64/lib
- export PATH=/usr/lib/x86_64-linux-gnu:/usr/local/lib:~/Qt/n°versionQT/gcc_64/lib:~/Qt/n°versionQT/gcc_64/bin:$PATH
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/Qt/n°versionQT/gcc_64/lib
- fermer le fichier (Ctrl-X), puis
- source ~/.profile
- copier dans un dossier
- le script create-rufus-appimage.sh qui se trouve dans le code de rufus dans le dossier /build-tools/Linux
- le script install-rufus.sh qui se trouve dans le code de rufus dans le dossier /build-tools/Linux
- le fichier RufusQt6App
- le programme linuxdeployqt qui se trouve dans le code de rufus dans le dossier /build-tools/Linux
- Clic droit sur les 2 scripts, onglet permissions, cocher autoriser l'éxécution comme un programme
- Se positionner dans ce dossier avec le terminal
Pour créer l'appimage, lancer le script create-rufus-appimage.sh
- dans le terminal, entrer
- ./create-rufus-appimage.sh
- le script va créer l'arborisation de l'appimage, puis l'appimage, puis détruira les fichiers temporaires
Pour installer Rufus dans les menus à partir de l'appimage produite, lancer le script install-rufus.sh
- dans le terminal, entrer
- ./install-rufus.sh
A - Dans un premier temps, après avoir compilé le programme dans le dossier /home de l'ordinateur, il vous faut créer un dossier qui sera dédié à cette tâche dans cet exemple le dossier ~/DeployRufus
Puis, il faut réunir dans ce dossier le fichier RufusApp généré par Rufus et les 2 fichiers rufus.desktop et rufus.png que vous aurez téléchargé. B - Modifier la variable PATH pour que linuxdeployqt trouve l'executable qmake export PATH=/usr/lib/x86_64-linux-gnu:/usr/local/lib:~/Qt/n°versionQT/gcc_64/lib:~/Qt/n°versionQT/gcc_64/bin:$PATH C - Supprimer les drivers sql inutiles Dans le dossier ~/Qt/n°versionQT/gcc_64/plugins/sqldrivers suprimer tous les fichiers qui ne contiennent pas mysql dans leur nom et ne garder donc que
D - Ensuite ouvrir le terminal et taper la commande cheminverslinuxdeployqt cheminversRufusApp -appimage ce qui donne, si votre terminal vous a placé dans votre dossier personnel et que linuxdepployqt est dans ce dossier et RufusApp, rufus.desktop et rufus.png dans un sous dossier DeployRufus ./linuxdeployqt-n°versionQT-x86_64.AppImage ./DeployRufus/RufusApp -appimage E - il se peut que linuxdeployqt n'arrive pas à trouver certaines bibliothèques et s'arrête sur un message d'erreur signifiant quelle bibliothèque il ne trouve pas 1. il faut rajouter le chemin vers les lib Qt dans le .profile nano ~/.profile puis rajouter la ligne suivante, en bas du fichier export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/Qt/n°versionQT/gcc_64/lib puis source ~/.profile 2. Malgré cela, c'est le cas souvent pour la lib libQt5Core.so.5 qui est un lien dynamique situé dans /usr/lib/x86_64-linux-gnu/ et qui pointe souvent vers une version antérieure à celle imposée par RufusApp Pour une raison que j'ignore, seulement pour cette bibliothèque, linuxdeployqt va effectuer une recherche dans /usr/lib/x86_64-linux-gnu/ et pas dans la bibliothèque de lib de la distribution Qt ~/Qt/n°versionQT/gcc_64 il faut supprimer le fichier de lien dynamique (la valeur du dossier et de la lib, n°versionQT dans cet exemple, sont à adapter en fonction de la version de Qt installée). sudo rm -r /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 puis le recréer et pointer vers la bonne librairie dans le dossier Qt/n°versionQT/gcc_64/lib sudo ln -s ~/Qt/n°versionQT/gcc_64/lib/libQt5Core.so.n°versionQT /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 Vous pouvez maintenant relancer le programme qui va travailler quelques minutes et finir par créer l'appimage, dans votre dossier personnel. |
5. Construire le driver MariaDB ou MySQL8.0 pour Qt 5.15.2 sous Linux Ubuntu - build MySQL/ MariaDB driver Qt5.15.2 Ubuntu
+++ il est supposé que la version installée est une version 5.15.2 et que son emplacement est ~/Qt
puis
- Corriger les lignes d'instruction en cas d'emplacement ou de version différents
- pour MariaDB
- sudo apt-get install libmariadb-dev
- pour MySQL
- sudo apt-get install libmysqlclient-dev
- nano ~/.profile
- export QTDIR=~/Qt/5.15.2
- export PATH=$PATH:~/Qt/Tools/CMake/bin:~/Qt/Tools/Ninja
- source ~/.profile
- mkdir build-sqldrivers
- cd ./build-sqldrivers
- pour MariaDB
- $QTDIR/gcc_64/bin/qmake MYSQL_PREFIX=/usr/include/mariadb $QTDIR/Src/qtbase/src/plugins/sqldrivers
- pour MySQL
- $QTDIR/gcc_64/bin/qmake MYSQL_PREFIX=/usr/include/mysql $QTDIR/Src/qtbase/src/plugins/sqldrivers
puis
- make sub-mysql
- cp -v plugins/sqldrivers/libqsqlmysql.so $QTDIR/gcc_64/plugins/sqldrivers/
6. Construire le driver MySQL pour Qt 6.4 sous MacOs Intel x64 - build MySQL driver QT6 MacOs intel x64
Comme d'habitude, tout cela est très mal expliqué dans la documentation de Qt, les gens de Qt considérant que vous êtes le petit prince de l'informatique et que vous saurez pallier les insuffisances de leurs explications.
Et que si, pour votre malheur, vous n'êtes pas ce petit prince, vous n'avez qu'à abandonner, parce que vous êtes trop stupide et l'informatique n'est pas faite pour vous.
Et que si, pour votre malheur, vous n'êtes pas ce petit prince, vous n'avez qu'à abandonner, parce que vous êtes trop stupide et l'informatique n'est pas faite pour vous.
Bon, ce coup de gueule posé, la compilation du driver n'est pas si complexe. Il vous faut installer Qt6.3 ou supérieur et les sources du logiciel par le biais du logiciel d'installation de Qt, MaintenanceTool. Donc, modifiez ou faites une installation neuve en cochant la case Sources du logiciel d'installation comme indiqué dans la capture d'écran ci contre
Il vous faut aussi installer CMake et Ninja en cochant les cases correspondantes (mais elles le sont normalement par défaut) |
On est loin d'avoir fini...
A - Télécharger Xcode sur l'Apple Store et l'installer
B - Indiquer au système le chemin vers les autres programmes dont il aura besoin pour compiler le driver
pour cela, rajouter de nouvelles valeurs à la variable EXPORT en entrant dans le terminal
A - Télécharger Xcode sur l'Apple Store et l'installer
B - Indiquer au système le chemin vers les autres programmes dont il aura besoin pour compiler le driver
pour cela, rajouter de nouvelles valeurs à la variable EXPORT en entrant dans le terminal
- export PATH=$PATH:~/Qt/Tools/CMake/CMake.app/Contents/bin:~/Qt/6.4.x/macos/bin:~/Qt/6.4.x/macos/lib:~/Qt/Tools/Ninja
- Attention à entrer la bonne valeur du dossier Qt, ici /Qt/6.4.x, mais il faut remplacer par le véritable emplacement de votre dossier Qt qui varie selon la version que vous avez installée: /Qt/6.4.0, /Qt/6.4.1, /Qt/6.4.2...etc...
C - créer un sous répertoire du dossier personnel build-sqldrivers et s'y déplacer
mkdir build-sqldrivers
cd build-sqldrivers
D - lancer le make du driver SQL
qt-cmake -G Ninja ~/Qt/6.4.x/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Qt/6.4.x/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib"
Attention à entrer la bonne valeur du dossier Qt, ici /Qt/6.4.x, mais il faut remplacer par le véritable emplacement de votre dossier Qt qui varie selon la version que vous aves installé /Qt/6.4.0, /Qt/6.4.1, /Qt/6.4.2/Qt6.5.0...etc...
puis, à la fin de l'écran de compilation, vous devez voir apparaître les lignes
Qt Sql Drivers:
DB2 (IBM) .............................. no
InterBase .............................. no
MySql .................................... yes
OCI (Oracle) .......................... no
ODBC .................................... no
PostgreSQL ........................... no
SQLite ................................... yes
Using system provided SQLite ......... no
le "yes" en face de MySQL indique que le driver MySQL est prêt à être compilé
E - lancer les commandes build puis install
- cmake --build .
- cmake --install .
Elle sert simplement à copier les fichiers élaborés par la compilation à leur emplacement dans les répertoires de Qt correspondant.
Dans ce cas,
- copier les libs contenues dans /Users/votrenomdutilisateur/build-sqldrivers/lib/cmake/Qt6Sql vers le dossier /Users/votrenomdutilisateur/Qt/6.4.x/macos/lib/cmake/Qt6Sql
- copier les libs contenues dans /Users/votrenomdutilisateur/build-sqldrivers/plugins/sqldrivers vers le dossier /Users/votrenomdutilisateur/Qt/6.4.x/macos/plugins/sqldrivers
F - Supprimer les libs inutiles dans /Users/votrenomdutilisateur/Qt/6.4.x/macos/plugins/sqldrivers
- rm -R ~/Qt/6.4.x/macos/plugins/sqldrivers/libqsqlite.*
- rm -R ~/Qt/6.4.x/macos/plugins/sqldrivers/libqsqlodbc.*
- rm -R ~/Qt/6.4.x/macos/plugins/sqldrivers/libqsqlpsql.*
Voilà, c'était presque simple.
7. Installer Qt6.6 et construire le driver MyQSL pour MariaDB ou MySQL8.0 sous Ubuntu - build MySQL/ MariaDB driver Qt6 Ubuntu
Il faut en premier lieu mettre à jour les dépôts
Dans le terminal
L'adressse peut varier en fonction des saisons
Taper Download Qt Online Installer dans le moteur de recherche si ça ne marche pas
Lancer l'installeur que vous venez de télécharger (un nom ressemblant à qt-unified-linux-x64-4.5.1-online.run - ne pas oublier d'autoriser l'éxécution du fichier comme un programme -> clic droit sur le nom du fichier - onglet Permissions - cocher la case autoriser l'éxécution du fichier comme un programme) et, si ce n'est pas déjà fait, créer un compte Qt sinon vous ne pourrez pas aller plus loin.
- sudo apt-get update
- sudo apt-get upgrade
Dans le terminal
- sudo apt-get install build-essential libgl1-mesa-dev libxcb-xinerama0 libxcb-cursor0
L'adressse peut varier en fonction des saisons
Taper Download Qt Online Installer dans le moteur de recherche si ça ne marche pas
Lancer l'installeur que vous venez de télécharger (un nom ressemblant à qt-unified-linux-x64-4.5.1-online.run - ne pas oublier d'autoriser l'éxécution du fichier comme un programme -> clic droit sur le nom du fichier - onglet Permissions - cocher la case autoriser l'éxécution du fichier comme un programme) et, si ce n'est pas déjà fait, créer un compte Qt sinon vous ne pourrez pas aller plus loin.
- +++ il est supposé que la version installée est une version 6.6.1 et que son emplacement est ~/Qt
- Corriger les lignes d'instruction en cas d'emplacement ou de version différents
- pour MariaDB
- sudo apt-get install libmariadb-dev
- pour MySQL
- sudo apt-get install libmysqlclient-dev
- nano ~/.profile
- export QTDIR=~/Qt/6.6.1
- export PATH=$PATH:~/Qt/Tools/CMake/bin:~/Qt/Tools/Ninja:~/Qt/6.6.1/gcc_64/bin
- source ~/.profile
- mkdir build-sqldrivers
- cd ./build-sqldrivers
- pour MariaDB
- $QTDIR/gcc_64/bin/qt-cmake -G Ninja $QTDIR/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=$QTDIR/gcc_64 -DMySQL_INCLUDE_DIR=/usr/include/mariadb -DMySQL_LIBRARY=/usr/lib/x86_64-linux-gnu/libmariadb.so
- pour MySQL
- $QTDIR/gcc_64/bin/qt-cmake -G Ninja $QTDIR/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=$QTDIR/gcc_64 -DMySQL_INCLUDE_DIR=/usr/include/mysql -DMySQL_LIBRARY=/usr/lib/x86_64-linux-gnu/libmysqlclient.so
DMySQL_INCLUDE_DIR correspond au dossier où se trouvent les fichiers d'en-tête de MariaDB et notamment mysql.h (/usr/include/mariadb)
DMySQL_LIBRARY correspond à l'endroit où se trouve la lib libmariadb.so (/usr/lib/x86_64-linux-gnu/libmariadb.so)
Il ne vous reste plus qu'à faire (attention à l'espace suivi du petit point rouge à la fin de la ligne, il fait partie de la commande)
- cmake --build .
- cmake --install .
8. Installer Qt6 et construire le driver MariaDB ou MySQL8.0 pour Windows - build MySQL/MariaDB driver Qt6 Windows
Je ne sais comment remercier Javier Rufas, développeur espagnol, dont la contribution désintéressée a permis de faire faire un pas de géant à Rufus avec un énorme travail : migration du code vers la version 6 de Qt et adaptation du code à Windows 10/11.
Le nouveau code, encore en phase de test est fonctionnel à 99% aujourd'hui.
On peut d'ores et déjà le télécharger sur le dépôt Github (branche Rufus Qt6 sur Github). Ce code est universel et marche donc dans les 3 environnements: MacOS, Ubuntu et Windows.
Le nouveau code, encore en phase de test est fonctionnel à 99% aujourd'hui.
On peut d'ores et déjà le télécharger sur le dépôt Github (branche Rufus Qt6 sur Github). Ce code est universel et marche donc dans les 3 environnements: MacOS, Ubuntu et Windows.
Pour compiler le driver MariaDB pour Qt6.4, il faut donc
A - Télécharger l'installateur online de Qt ici -> www.qt.io/download-qt-installer
A - Télécharger l'installateur online de Qt ici -> www.qt.io/download-qt-installer
B - Installer Qt6.6.0 ou supérieur et choisir les options cochées sur les 2 photos. Il faut aussi télécharger Ninja et Cmake comme c'est proposé par défaut tout en bas des propositions de l'installateur
+++ choisir le compilateur MSVC et pas MinGW qui ne gère pas les PDF et ne fonctionnerait pas avec le code de Rufus Il faut donc compiler la librairie qsqlmysql.dll qui va permettre de faire communiquer le code de Qt avec les bases de données MySQL quelles qu'elles soient. Il y a, dans l'environnement Windows, 2 versions de cette librairie, suivant la compilation que l'on veut obtenir, release ou debug. |
Il faut donc maintenant compiler la librairie qsqlmysql.dll qui va permettre de faire communiquer le code de Qt avec les bases de données MySQL quelles qu'elles soient.
Il y a, dans l'environnement Windows, 2 versions de cette librairie, suivant la compilation que l'on veut obtenir, release ou debug. C - Installer Visual Studio Community 2019. Télécharger à la page visualstudio.microsoft.com/fr/vs/older-downloads/ Dans le dossier Téléchargements, démarrer l'installeur, vs_community__untruccabalistique.exe. Après l'installation, un écran apparait qui permet de choisir plusieurs options. Choisir seulement Développement desktop en C++ |
D - Pour MariaDB, télécharger et installer mariaDB connector for C si ce n'est pas déjà fait -> cf page Installation. du serveur MySQL sous Windows chapitre 6. Installation de MariaDB Connector for C
E - Lancer la console X64 Native Tools Command Prompt dans le menu Visual Studio et pas la ligne de commande
F - dans le fichier C:\Qt\6.6.1\msvc2019_64\bin\qt-cmake.bat, modifier le chemin de cmake en le remplaçant par
suivant que l'on veut obtenir une version release ou debug de la lib qsqlmysql.dll (version release) ou libqsqlmysqld.dll (version debug), il faut éditer le fichier
Puis, taper l'instruction
Attention à entrer la bonne valeur du dossier Qt, ici \Qt\6.6.1, mais il faut remplacer par le véritable emplacement de votre dossier Qt qui varie selon la version que vous aves installé \Qt\6.4.0, \Qt\6.4.1, \Qt\6.4.2...etc...
Il faudra aussi adpater les 2 chemins -DMySQL_INCLUDE_DIR et -DMySQL_LIBRARY en fonction de votre installation
A la fin de l'écran de compilation, vous devez voir apparaître les lignes
Qt Sql Drivers:
DB2 (IBM) .............................. no
InterBase .............................. no
MySql .................................... yes
OCI (Oracle) .......................... no
ODBC .................................... no
PostgreSQL ........................... no
SQLite ................................... yes
Using system provided SQLite ......... no
le "yes" en face de MySQL indique que le driver MySQL est prêt à être compilé
I - lancer les commandes build puis install
Il est possible que le fichier qsqlmysql.dll ne soit pas copié par la commande cmake --install ..
Il faut alors le copier "manuellement".
Il se trouve dans le dossier C:\Users\votrenomdutilisateur\build-sqldrivers\plugins\sqldrivers.
Il faut le copier dans C:\Qt\6.6.1\macos\plugins\sqldrivers à l'aide de l'explorateur Windows.
E - Lancer la console X64 Native Tools Command Prompt dans le menu Visual Studio et pas la ligne de commande
F - dans le fichier C:\Qt\6.6.1\msvc2019_64\bin\qt-cmake.bat, modifier le chemin de cmake en le remplaçant par
- set cmake_path=C:\Qt\Tools\CMake_64\bin\cmake.exe
- mkdir C:\Users\votrenomdutilisateur\build-sqldrivers
- cd C:\Users\votrenomdutilisateur\build-sqldrivers
suivant que l'on veut obtenir une version release ou debug de la lib qsqlmysql.dll (version release) ou libqsqlmysqld.dll (version debug), il faut éditer le fichier
- C:\Qt\6.6.1\msvc2019_64\lib\cmake\Qt6\QtBuilOptionsHelper.cmake
- set(_default_build_type "Release")
Puis, taper l'instruction
- Pour MariaDB
- call C:\Qt\6.6.1\msvc2019_64\bin\qt-cmake -G Ninja c:\Qt\6.6.1\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=c:\Qt\6.6.1\msvc2019_64 -DMySQL_INCLUDE_DIR="C:\Program Files\MariaDB\MariaDB Connector C 64-bit\include" -DMySQL_LIBRARY="C:\Program Files\MariaDB\MariaDB Connector C 64-bit\lib\libmariadb.lib"
- Pour MySQL 8.0
- call C:\Qt\6.6.1\msvc2019_64\bin\qt-cmake -G Ninja c:\Qt\6.6.1\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=c:\Qt\6.6.1\msvc2019_64 -DMySQL_INCLUDE_DIR="C:\Program Files\MySQL\MySQL Server 8.0\include" -DMySQL_LIBRARY="C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib"
- call C:\Qt\6.6.1\msvc2019_64\bin\qt-cmake -G Ninja c:\Qt\6.6.1\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=c:\Qt\6.6.1\msvc2019_64 -DMySQL_INCLUDE_DIR="C:\Program Files\MySQL\MySQL Server 8.0\include" -DMySQL_LIBRARY="C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib"
Attention à entrer la bonne valeur du dossier Qt, ici \Qt\6.6.1, mais il faut remplacer par le véritable emplacement de votre dossier Qt qui varie selon la version que vous aves installé \Qt\6.4.0, \Qt\6.4.1, \Qt\6.4.2...etc...
Il faudra aussi adpater les 2 chemins -DMySQL_INCLUDE_DIR et -DMySQL_LIBRARY en fonction de votre installation
- -DMySQL_INCLUDE_DIR indique le dossier où se trouve le fichier d'entête mysql.h
- -DMySQL_LIBRARY indique le chemin vers la lib libmariadb.lib ou libmysql.lib
A la fin de l'écran de compilation, vous devez voir apparaître les lignes
Qt Sql Drivers:
DB2 (IBM) .............................. no
InterBase .............................. no
MySql .................................... yes
OCI (Oracle) .......................... no
ODBC .................................... no
PostgreSQL ........................... no
SQLite ................................... yes
Using system provided SQLite ......... no
le "yes" en face de MySQL indique que le driver MySQL est prêt à être compilé
I - lancer les commandes build puis install
- cmake --build .
- cmake --install .
Il est possible que le fichier qsqlmysql.dll ne soit pas copié par la commande cmake --install ..
Il faut alors le copier "manuellement".
Il se trouve dans le dossier C:\Users\votrenomdutilisateur\build-sqldrivers\plugins\sqldrivers.
Il faut le copier dans C:\Qt\6.6.1\macos\plugins\sqldrivers à l'aide de l'explorateur Windows.
9. Construire le driver MySQL ou MariaDB pour Qt 6 sous MacOs sur Mac à processeur M1/M2 - build MySQL/MariaDB driver QT6 MacOs Apple M1
A - Pour MySQL
Les libs compatibles M1/M2 (arm64) ne sont fournies qu'à partir des versions 8.0.26 de MySQL. Il faut donc impérativement utiliser une de ces versions pour pouvoir compiler le driver MySQL pour Qt6 sur un Mac à processeur arm64.
Se référer à la page www.geeksforgeeks.org/how-to-install-mysql-on-macos/ pour la procédure d'installation.
La configuration du serveur MySQL sera identique à celle décrite dans la page du site rufusvision pour la configuration d'un serveur MySQL 5.7 -> Installation du serveur MySQL sous MacOS
Les libs compatibles M1/M2 (arm64) ne sont fournies qu'à partir des versions 8.0.26 de MySQL. Il faut donc impérativement utiliser une de ces versions pour pouvoir compiler le driver MySQL pour Qt6 sur un Mac à processeur arm64.
Se référer à la page www.geeksforgeeks.org/how-to-install-mysql-on-macos/ pour la procédure d'installation.
La configuration du serveur MySQL sera identique à celle décrite dans la page du site rufusvision pour la configuration d'un serveur MySQL 5.7 -> Installation du serveur MySQL sous MacOS
Une seule différence cependant, il faut indiquer à MySQL 8.0 qu'il doit utiliser le fichier de configuration my.cnf et son emplacement
Dans pomme/Réglages du système, rubrique MySQL, onglet Configuration Cocher la case Configuration File puis Select et indiquer le chemin vers /etc/my.cnf Valider en cliquant sur Apply |
B - Installer Qt 6
Installer Qt6.3 ou supérieur et les sources du logiciel par le biais du logiciel d'installation de Qt, MaintenanceTool. Donc, modifiez ou faites une installation neuve en cochant la case Sources du logiciel d'installation comme indiqué dans la capture d'écran ci contre Installer aussi CMake et Ninja en cochant les cases correspondantes (mais elles le sont normalement par défaut) |
- On est loin d'avoir fini...
C - Télécharger Xcode sur l'Apple Store et l'installer
D - Indiquer au système le chemin vers les autres programmes dont il aura besoin pour compiler le driver
pour cela, rajouter de nouvelles valeurs à la variable EXPORT en entrant dans le terminal
- export PATH=$PATH:~/Qt/Tools/CMake/CMake.app/Contents/bin:~/Qt/6.6.1/macos/bin:~/Qt/6.6.1/macos/lib:~/Qt/Tools/Ninja
- Attention à entrer la bonne valeur du dossier Qt, ici /Qt/6.6.1, mais il faut remplacer par le véritable emplacement de votre dossier Qt qui varie selon la version que vous avez installée: /Qt/6.4.0, /Qt/6.4.1, /Qt/6.4.2...etc...
E - créer un sous répertoire du dossier personnel build-sqldrivers et s'y déplacer
mkdir build-sqldrivers
cd build-sqldrivers
F - lancer le make du driver SQL
a. pour MariaDB
- qt-cmake -G Ninja ~/Qt/6.6.1/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Qt/6.6.1/macos -DMySQL_INCLUDE_DIR="/opt/homebrew/Cellar/mariadb/10.11.2/include" -DMySQL_LIBRARY="/opt/homebrew/Cellar/mariadb/10.11.2/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="arm64"
b. pour MySQL
- qt-cmake -G Ninja ~/Qt/6.6.1/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Qt/6.6.1/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="arm64"
À la fin de l'écran de compilation, vous devez voir apparaître les lignes
Qt Sql Drivers:
DB2 (IBM) .............................. no
InterBase .............................. no
MySql .................................... yes
OCI (Oracle) .......................... no
ODBC .................................... no
PostgreSQL ........................... no
SQLite ................................... yes
Using system provided SQLite ......... no
le "yes" en face de MySQL indique que le driver MySQL est prêt à être compilé
G - modifier le fichier build.ninja
La commande précédente a créé un ensemble de fichiers dans le dossier build-sqldrivers et parmi ces fichiers, le fichier build.ninja va devoir être modifié Il fait référence à une compilation pour une architecture x86_64 et il faut remplacer cette référence par une référence à l'architecture arm64 On peut le faire avec un éditeur de texte en remplaçant -arch x86_64 par -arch arm64 On peut le faire aussi plus simplement en entrant cette commande dans le terminal
|
H - Pour MariaDB seulement, copier les fichiers de développement du driver dans les sources de Qt
- cp -R /opt/homebrew/Cellar/mariadb/10.11.2/include/mysql ~/Qt/6.6.1/Src/qtbase/src/plugins/sqldrivers
I - lancer les commandes build puis install
Elle sert simplement à copier les fichiers élaborés par la compilation à leur emplacement dans les répertoires de Qt correspondant.
Dans ce cas,
J - Supprimer les libs inutiles dans /Users/votrenomdutilisateur/Qt/6.6.1/macos/plugins/sqldrivers
Voilà, c'était presque simple.
- cmake --build .
- cmake --install .
Elle sert simplement à copier les fichiers élaborés par la compilation à leur emplacement dans les répertoires de Qt correspondant.
Dans ce cas,
- copier les libs contenues dans /Users/votrenomdutilisateur/build-sqldrivers/lib/cmake/Qt6Sql vers le dossier /Users/votrenomdutilisateur/Qt/6.6.1/macos/lib/cmake/Qt6Sql
- copier les libs contenues dans /Users/votrenomdutilisateur/build-sqldrivers/plugins/sqldrivers vers le dossier /Users/votrenomdutilisateur/Qt/6.6.1/macos/plugins/sqldrivers
J - Supprimer les libs inutiles dans /Users/votrenomdutilisateur/Qt/6.6.1/macos/plugins/sqldrivers
- rm -R ~/Qt/6.6.1/macos/plugins/sqldrivers/libqsqlite.*
- rm -R ~/Qt/6.6.1/macos/plugins/sqldrivers/libqsqlodbc.*
- rm -R ~/Qt/6.6.1/macos/plugins/sqldrivers/libqsqlpsql.*
Voilà, c'était presque simple.
10. Créer un exécutable RufusSetup.exe, à partir de la compilation sous Windows 10 - windeployqt
A - Dans un premier temps, après avoir compilé le programme, il vous faut créer un dossier qui sera dédié à cette tâche dans cet exemple le dossier /usermachin/RufusDeploy
B - Dans ce dossier RufusDeploy, copier l'executable Rufus.exe que vous venez de créer C - Créer un sous dossier Applications dans le dossier RufusDeploy D - Dans ce dossier Applications, copier les executables mysql ou mariadb en fonction de ce que vous avez installé Pour Mysql : mysql.exe et mysqldump.exe Pour MariaDB: mariadb.exe et mariadb_dump.exe E - Supprimer les drivers sql inutiles Dans le dossier C:\Qt\versiondeQT\msvc2019_64\plugins\sqldrivers suprimer tous les fichiers qui ne contiennent pas mysql dans leur nom et ne garder donc que
F - Ensuite ouvrir le programme Windows Powershell ISE et taper la commande C:\Qt\6.xxx\msvc2019_64\bin\windeployqt C:\Users\votrenomdutilisateur\RufusDeploy Cette commande va copier deans le dossier \RufusDeploy toutes les libs nécessaires à l'éxécution de Rufus G - Installez puis lancez Inno Setup Compiler jrsoftware.org/isdl.php H - Créez ou lancez le script de compilation du programme rufussetup.exe par Inno Setup Compiler ISC va utiliser un scriot pour créer le programme d'installation rufussetup.exe. Vous pouvez générer ce script avec ISC Wizard ou manuellement. exemple de script de compilation .iss à adapter en fonction de votre configuration rufusvision.iss I - Après l'éxéction du script, le programme Rufussetup.exe est crée dans le dossier C:\votredossierdecodeRufus\build_tools\Windows\Output |