-
Stratégie de packaging
Bonjour à tous,
je suis en train de packager mon application. Celle-ci est compilée pour Windows, Mac OS X et GNU/Linux.
J'ai 1 exécutable, les librairies partagées de Qt et surtout un certain nombre de fichiers images constituant mon IHM.
Sous Windows c'est relativement simple puisque mon installeur copie tous les fichiers, y compris l'exécutable dans program Files\projet. Les images sont dans le sous-dossier \images.
Du coup quand je cherche l'image images\monimage.png, elle est chargée sans soucis.
Sous Mac OS ca n'est pas la même chanson... Si je veux un fonctionnement similaire il faut que je mette mon dossier images au même niveau que mon Projet.app... Ce qui n'est pas du tout user-friendly. Il faut que je mette mes images dans Projet.app\Content ou .\Content\Resources.
je me demandais donc s'il n'y avait pas une stratégie pré-établie, un truc simple et magique qui me permettrai de mettre mes images dans le répertoire sus-cité et de dire à l'ensemble de mon programme... "elles sont là :". Je dois encore préciser une petite chose qui fait toute la différence, c'est que les images ne sont que pour une toute petite partie chargée via des .qrc mais beaucoup sont utilisées par une librairie tierce qui n'a rien à voir avec Qt.
Merci à vous
Salutations
Tristan
-
Bon en fait pour ceux que ca intéresse, la seule solution est d'utiliser les ressources pour ce qui est des images exploitées par la partie QT de l'appli. Pour les librairies tierces, on se démerde ! :D
A bientôt
-
Sous MacOS tu peux utiliser l'utilitaire macdeployqt. Il copie les frameworks Qt dans App.app/Contents/Frameworks. Il met à jour les "install_name" des libs Qt uniquement.
La génération de la version de déploiement nécessite dans la plupart des cas des script shell. Dans un de tes scripts, tu peux appeler macdeployqt et copier toutes tes images dans App.app/Contents/Resources.
Si tu as de nombreuses images(ou lourdes), il faut mieux éviter les resources qrc. Ces ressources sont bien pour le design d'interface. Il faut juste modifier légèrement ton code. Le chemin de recherche de tes images doit être modifié en fonction de la platforme.