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 - 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.
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 - Retirer du package Qt les librairies SQL qui vont entraver le déploiement
Dans un premier temps, après avoir compilé le programme , 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/6.x.x/macOs/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 tous le fichiers en ne conservant que libqsqlmysql.dylib et libqsqlmysql.dylib.dSIM.
Dans un premier temps, après avoir compilé le programme , 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/6.x.x/macOs/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 tous le fichiers en ne conservant que libqsqlmysql.dylib et libqsqlmysql.dylib.dSIM.
B - Ajouter les programmes mysql et les librairies additionnelles de cryptage ssl au package
Clic droit sur le programme RufusQt6.App qui vient d'être compilé
Dans le dossier Applications, copier les programmes mysql et mysqldump qui se trouvent dans /usr/local/mysql/bin
Dans le dossier lib, copier les libs libcrypto3.dylib et libssl3.dylib qui se trouvent dans /usr/local/mysql/lib
C - Exécuter macdeployqt
Dans le terminal, taper la commande
|
D - Corriger les erreurs de lien éventuelles
Ce chapitre a été conservé pour mémoire mais n'est plus utile.
Sous Qt5, macdeployqt faisait parfois quelques erreurs de lien.
Macdeployqt conserve parfois les liens de recherche des dépendances du paquet 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 RufusQt6.app/Contents/Plugins/sqldrivers
Ce chapitre a été conservé pour mémoire mais n'est plus utile.
Sous Qt5, macdeployqt faisait parfois quelques erreurs de lien.
Macdeployqt conserve parfois les liens de recherche des dépendances du paquet 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 RufusQt6.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 E - Pour les Mac à puce ARM Silicon D'après la page github.com/orgs/Homebrew/discussions/3088 Il y a un problème avec les applications non signées sur les nouveaux Mac ARM Silicon, à savoir qu'il est impossible d'exécuter des applications non signées sans les auto-signer au préalable. Alors qu'auparavant, les applications non signées semblaient avoir été traitées de la même manière que les applications signées par des développeurs inconnus, vous ne recevrez même plus d'invite dans le volet Sécurité des Préférences Système pour "Autoriser" (ajouter une exception). Par conséquent, après avoir installé une application non signée, celle-ci refusera de s’ouvrir: vous recevez un message du type : L'application « RufusQt6.app » ne peut pas être ouverte avec un message d'erreur sur la sécurité. La solution évidente semble être d’auto-signer toutes les applications installées. Cela se fait généralement via la ligne de commande avec sudo codedesign --force --deep -s -votreapplication.app. Si l'exécutable RufusQt6 est dans le dossier applications du Mac, il faut donc faire
F - Créer le programme installable RufusQt6.dmg 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 RufusQt6.dmg C'est la partie la plus simple de ce chapitre. Il suffit maintenant de taper dans le Terminal, la commande
Si vous avez bien suivi toute cette fastidieuse manip, le fichier RufusQt6.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
a- pour MySQL
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"
b - pour mariaDBqt-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/Cellar/mariadb/11.3.2/include/mysql" -DMySQL_LIBRARY="/usr/local/Cellar/mariadb/11.3.2/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="x86_64"
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.x 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.
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.
Dans kes expressions suivantes LySQL8.x doit être remplacé par votre version de MySQL: 8.0, 8.1, 8.2, 8.3, 8.4...etc...
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.
Dans kes expressions suivantes LySQL8.x doit être remplacé par votre version de MySQL: 8.0, 8.1, 8.2, 8.3, 8.4...etc...
Pour compiler le driver MySQL/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.3 (ne pas installer une version supérieure à 6.6.3 - un bug de Qt bloque le fonctionnement d'une fiche dans Rufus et provoque le plantage du programme - Ce bug n'existe pas sous MacOs ou Ubuntu) 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.4.3\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)
Attention à entrer la bonne valeur du dossier Qt, ici \Qt\6.4.3, 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...
Pour le mode Debug, taper l'instruction
Pour le mode Release, l'instruction est la même mais Debug est remplacé par Release à la fin de la ligne d'instruction
Attention à entrer la bonne valeur du dossier Qt, ici \Qt\6.4.3, 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.4.3\macos\plugins\sqldrivers à l'aide de l'explorateur Windows.
J - Indiquer à Qt l'emplacement des libs
1. libmysql.dll
Rufus sera correctement compilé mais il ne pourra pas se conecter à la base si on ne lui indique pas où se trouve la lib libmysql.dll (ou son équivalent libmariad.dll) au moment de la compilation.
Pour cela, dans QtCreator, après avoir ouvert le projet RufusQt6.pro, cliquer sur Projets dans la colonne de gauche, puis cliquer sur la ligne Exécuter et dans la partie Environnement cliquer sur le bouton Détails.
Dans le tableau qui apparaît, chercher la rangée de la variable dans la colonne de gauche
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.4.3\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)
Attention à entrer la bonne valeur du dossier Qt, ici \Qt\6.4.3, 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...
Pour le mode Debug, taper l'instruction
- Pour MariaDB
- call C:\Qt\6.4.3\msvc2019_64\bin\qt-cmake -G Ninja c:\Qt\6.4.3\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=c:\Qt\6.4.3\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" -DCMAKE_BUILD_TYPE=Debug
- Pour MySQL 8.x
- call C:\Qt\6.4.3\msvc2019_64\bin\qt-cmake -G Ninja c:\Qt\6.4.3\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=c:\Qt\6.4.3\msvc2019_64 -DMySQL_INCLUDE_DIR="C:\Program Files\MySQL\MySQL Server 8.x\include" -DMySQL_LIBRARY="C:\Program Files\MySQL\MySQL Server 8.x\lib\libmysql.lib" -DCMAKE_BUILD_TYPE=Debug
- call C:\Qt\6.4.3\msvc2019_64\bin\qt-cmake -G Ninja c:\Qt\6.4.3\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=c:\Qt\6.4.3\msvc2019_64 -DMySQL_INCLUDE_DIR="C:\Program Files\MySQL\MySQL Server 8.x\include" -DMySQL_LIBRARY="C:\Program Files\MySQL\MySQL Server 8.x\lib\libmysql.lib" -DCMAKE_BUILD_TYPE=Debug
Pour le mode Release, l'instruction est la même mais Debug est remplacé par Release à la fin de la ligne d'instruction
- Pour MariaDB
- call C:\Qt\6.4.3\msvc2019_64\bin\qt-cmake -G Ninja c:\Qt\6.4.3\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=c:\Qt\6.4.3\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" -DCMAKE_BUILD_TYPE=Release
- Pour MySQL 8.x
- call C:\Qt\6.4.3\msvc2019_64\bin\qt-cmake -G Ninja c:\Qt\6.4.3\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=c:\Qt\6.4.3\msvc2019_64 -DMySQL_INCLUDE_DIR="C:\Program Files\MySQL\MySQL Server 8.x\include" -DMySQL_LIBRARY="C:\Program Files\MySQL\MySQL Server 8.x\lib\libmysql.lib" -DCMAKE_BUILD_TYPE=Release
Attention à entrer la bonne valeur du dossier Qt, ici \Qt\6.4.3, 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.4.3\macos\plugins\sqldrivers à l'aide de l'explorateur Windows.
J - Indiquer à Qt l'emplacement des libs
1. libmysql.dll
Rufus sera correctement compilé mais il ne pourra pas se conecter à la base si on ne lui indique pas où se trouve la lib libmysql.dll (ou son équivalent libmariad.dll) au moment de la compilation.
Pour cela, dans QtCreator, après avoir ouvert le projet RufusQt6.pro, cliquer sur Projets dans la colonne de gauche, puis cliquer sur la ligne Exécuter et dans la partie Environnement cliquer sur le bouton Détails.
Dans le tableau qui apparaît, chercher la rangée de la variable dans la colonne de gauche
Mettre Path en surbrillance, cliquer sur Modifier. Une longue liste de chemins apparait mais il manque celui où se trouve libmysql.dll. Cliquer sur Ajouter et chercher le dossier C:\Program Files\MySQL\MySQL Server 8.x\lib
Cliquez sur OK.
2. Idem pour libcrypto-3-x64.dll et libssl-3-x64.dll
Si vous utilisez une base de données postérieure à MySQL 8.0.28 et un driver compilé avec les sources fournies avec ces bases, il faut impérativement joindre le chemin de ces libs dans le Path, sinon, le driver ne fonctionnera pas.
C'est donc C:\Program Files\MySQL\MySQL Server 8.x\bin. qu'il faut alors aussi incorporer dans la variable Path
Si vous utilisez une base de données antérieure à MySQL 8.0.28 et un driver compilé avec les sources fournies avec ces bases, il est inutile de faire cette modification. Mais la version de Rufus compilée avec ce driver ne pourra se connecter qu'aux bases dont les versions sont antérieures à 8.0.28 pour MySQL et 11 pour MariaDB.
La démarche est la même pour MariaDB 11 mais bien sûr le chemin n'est pas le même et se trouve dans le dossier MariaDB Connector.
Voilà. Maintenant tout devrait marcher aux petits oignons
Cliquez sur OK.
2. Idem pour libcrypto-3-x64.dll et libssl-3-x64.dll
Si vous utilisez une base de données postérieure à MySQL 8.0.28 et un driver compilé avec les sources fournies avec ces bases, il faut impérativement joindre le chemin de ces libs dans le Path, sinon, le driver ne fonctionnera pas.
C'est donc C:\Program Files\MySQL\MySQL Server 8.x\bin. qu'il faut alors aussi incorporer dans la variable Path
Si vous utilisez une base de données antérieure à MySQL 8.0.28 et un driver compilé avec les sources fournies avec ces bases, il est inutile de faire cette modification. Mais la version de Rufus compilée avec ce driver ne pourra se connecter qu'aux bases dont les versions sont antérieures à 8.0.28 pour MySQL et 11 pour MariaDB.
La démarche est la même pour MariaDB 11 mais bien sûr le chemin n'est pas le même et se trouve dans le dossier MariaDB Connector.
Voilà. Maintenant tout devrait marcher aux petits oignons
9. Construire le driver MySQL/MariaDB pour Qt 6 sous MacOs Silicon - build MySQL/MariaDB driver QT6 MacOs Silicon
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. Les sources du programme vont permettre de compiler le driver MySQL. 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 QtCreator, CMake et Ninja en cochant les cases correspondantes (mais elles le sont normalement par défaut) Installer aussi les librairies additionnelles QtPdf version Desktop, QTMultimedia et QtSerialPort, indispensables au fonctionnement de Rufus |
- 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.8.0/macos/bin:~/Qt/6.8.0/macos/lib:~/Qt/Tools/Ninja
- Attention à entrer la bonne valeur du dossier Qt, ici /Qt/6.8.0, 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.8.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Qt/6.8.0/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.8.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Qt/6.8.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="arm64"
À la fin de la compilation, vous devez voir apparaître des lignes de confirmation, variant suivant la version de Qt
-- Configuration summary has been written to /Users/xxx/config.summary
-- Configuring done (6.5s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/xxx
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/<votre_n°_de_version_de_MariaDB>/include/mysql ~/Qt/6.6.1/Src/qtbase/src/plugins/sqldrivers
I - lancer les commandes build puis installer les drivers
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 . (attention à l'espace entre build et .)
Dans ce cas,
- copier les libs contenues dans /Users/votrenomdutilisateur/build-sqldrivers/lib/cmake/Qt6Sql vers le dossier /Users/votrenomdutilisateur/Qt/6.8.0/macos/lib/cmake/Qt6Sql
- copier les libs contenues dans /Users/votrenomdutilisateur/build-sqldrivers/plugins/sqldrivers vers le dossier /Users/votrenomdutilisateur/Qt/6.8.0/macos/plugins/sqldrivers
J - Supprimer les libs inutiles dans /Users/votrenomdutilisateur/Qt/6.6.1/macos/plugins/sqldrivers
- rm -R ~/Qt/6.8.0/macos/plugins/sqldrivers/libqsqlite.*
- rm -R ~/Qt/6.8.0/macos/plugins/sqldrivers/libqsqlodbc.*
- rm -R ~/Qt/6.8.0/macos/plugins/sqldrivers/libqsqlpsql.*
Voilà, c'était presque simple.
10. Créer un exécutable RufusSetup.exe, à partir de la compilation sous Windows 10/11 - 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 C:\Users\votrenomdutilisateur\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 mysql.exe et mysqldump.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 - Copier les dll
C:\Qt\6.xxx\msvc2019_64\bin\windeployqt C:\Users\votrenomdutilisateur\RufusDeploy Cette commande va copier dans le dossier \RufusDeploy toutes les libs nécessaires à l'éxécution de Rufus H - Installez puis lancez Inno Setup Compiler jrsoftware.org/isdl.php I - Créez ou lancez le script de compilation du programme rufussetup.exe par Inno Setup Compiler ISC va utiliser un script 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 |