J'ai récemment suivi une discussion sur la liste de diffusion Qt4-intérêt pour savoir s'il est légal ou non de construire une application commerciale/propriétaire et de lier statiquement Qt4. Bien qu'il existe des moyens non éprouvés de le faire (en fournissant des fichiers objet et un Makefile, etc. au client), cela ne semble pas être une bonne idée après tout. L'un de mes projets utilise les bibliothèques Qt4 sous licence LGPL et je les envoie en tant que DLL/Dylibs/so séparées à mon client, en utilisant un programme d'installation simple sur toutes les plates-formes. Bien que cela fonctionne assez bien jusqu'à présent, j'aimerais optimiser a) la taille de l'installateur en réduisant la taille de la bibliothèque Qt en n'incluant que ce dont j'ai besoin, b) augmenter la vitesse de démarrage/chargement de mon application.Création de drapeaux Qt4 optimisés - "./configure" et de leurs significations
Je suis familier avec la compilation de Qt moi-même, mais Qt a beaucoup de drapeaux et de commutateurs.
En ce moment, je construis avec les indicateurs suivants:
./configure \
-fast \
-opensource \
-qt-sql-sqlite \
-nomake demos examples \
-silent \
-no-qt3support \
-no-gif \
-plugin-sql-mysql \
-release \
-no-xmlpatterns \
-no-multimedia
Je ne suis pas tout à fait sûr de l'effet/l'impact des drapeaux suivants ont:
-no-stl
-no-javascript-jit
-no-nis
-separate-debug-info
-no-openvg
-no-mitshm
Y at-il autre chose que je peux faire, par exemple, en fournissant des commutateurs d'optimisation pour le compilateur, ou « stripping » fonctions inutilisées de la bibliothèque Qt construit pour le rendre plus petit (ce qui serait facile avec des constructions statiques). Je n'ai pas beaucoup d'expérience avec ça. Oh, juste comme une petite note, ma taille d'application compilée est d'environ 600 kb (non-dénudée) lors de la liaison dynamique avec Qt. Je l'ai expérimenté et j'ai trouvé que sa taille était d'environ 4 Mo lorsque je lia statiquement; mais de cette façon, je n'aurais plus besoin d'inclure 40 Mo de bibliothèques Qt.
Alors, pour mettre tout ce qui précède dans une question/demande:
Si vous êtes plus avancé que moi sur ce sujet, comment optimiser/Déployez vos propres applications et assurez-vous qu'ils commencent rapidement et ne contiennent que ce qui est necessaire?
Merci pour la réponse! En fait, je ne fais que l'expédition de ce qui est nécessaire, et cela inclut QtCore, QtGui, QtWebKit, QtXml, QtSql et QtNetwork. À quels problèmes dois-je m'attendre lorsque j'utilise '-no-stl'? Je vais essayer d'en savoir plus sur la génération de code de lien-temps, car cela semble être intéressant. Exclure également certains des styles est une très bonne idée, car j'utilise juste les styles natifs sur OS X/Windows. – BastiBen
Vous perdrez les fonctions de conversion entre QString et basic_string et entre les conteneurs QTL et les conteneurs STL. – rpg
Merci d'avoir éclairci cela. Je ne peux pas me rappeler d'avoir utilisé des classes/types de STL n'importe où. Habituellement, les trucs de Qt fonctionnent très bien pour moi. :) – BastiBen