bâtiment avec qmake sur Linux - comment empêcher le qmake de liaison à QtCore et QtGui
J'ai une bibliothèque partagée (sans QT dépendance) [bibliothèque B] liens vers une autre bibliothèque partagée (sans QT dépendance) [la bibliothèque].
J'utilise Qmake et QT Creator 1.3. Le problème est que lorsque je construis bibliothèque B et exécutez la commande ldd sur le fichier exécutable, il est lié à QtCore et QtGui, qui tire dans beaucoup de fichiers non requis, résultant dans un fichier exécutable qui est long à charger, et a indésirables dépendances.
J'ai essayé à peu près tout pour arrêter qmake de lier ces bibliothèques à la bibliothèque B.
Un extrait de mon fichier de projet pour la bibliothèque de B est indiqué ci-dessous:
TEMPLATE = lib
LIBS += -L../datelib/bin -ldatelib_release
QT -= gui core
LIBS -= -lQtGui -lQtCore
CONFIG += dll
CONFIG += debug_and_release
CONFIG(debug, debug|release) {
TARGET =targetnameD
}else {
TARGET = targetname
}
J'utilise QtCreator 3 sur Ubuntu 9.10
QT est la version 4.5.2
OriginalL'auteur Stick it to THE MAN | 2010-02-19
Vous devez vous connecter pour publier un commentaire.
Mettre
CONFIG -= qt
dans votre .fichier pro.Il travaille ici. C'est la méthode utilisée pour les projets de l'intervalle Qt de l'arbre source qui n'ont pas un lien avec Qt. En général, il fonctionne. Voir
src/winmain/winmain.pro
de l'intervalle Qt de l'arbre source pour un exemple. Vous pouvez double-vérifier: (1) vous avez vraiment couru qmake nouveau et tout reconstruit (faire complètement propre à créer après l'exécution de qmake). (2) Aucune des bibliothèques de lien contre sont eux-mêmes de se lier à des libQtCore ou libQtGui (par exempledatelib_release
ne doit pas lien avec Qt).OriginalL'auteur rohanpm
Vous pouvez essayer avec
Regarder et/ou supprimer les yourporjectname.pro.fichier de l'utilisateur.
c'était la première chose que j'ai fait (avant de poster ma question), il ne fait pas de différence.
Ah, désolé. C'était un coup de feu dans l'obscurité - beaucoup de gens ne réalisent pas que l' *fichiers de l'utilisateur peuvent également influencer la résultante de construire des artefacts.
Est la LIBS ligne vraiment nécessaire? Je veux dire, si je n'ai pas besoin de l'interface graphique libs QT -= gui est assez pour désactiver -lQtGui.
OriginalL'auteur gregseth
Pour les applications, vous faites comme ceci:
Plus d'infos ici:
qmake projets communs
OriginalL'auteur Ben
J'ai eu le même problème.
Ce que j'ai fait était de créer un nouveau projet de bibliothèque avec qtcore et qtgui. Supprimé tous les fichiers inutiles qui a été créé par l'assistant. Ajouté mes fichiers dans le dossier du projet et modification de l' *.fichier pro. Il a commencé à travailler correctement.
C'était un problème avec QtCreator, il n'est pas lu correctement .pro fichier à générer .pro.l'utilisateur, sorcière QtCreator utilisation de construire, et de l'assistant générer correcte .pro.fichier de l'utilisateur.
Je l'ai fait avec Qt 4.7
Souhaite à cette aide.
OriginalL'auteur firescreamer
Autant que je sache, Qt creator n'a pas pris .pro configurations en considération si vous ne les avez pas configuré séparément à partir de l'IDE.
Vous devriez aller pour les paramètres du projet, de dupliquer la configuration de débogage, de renommer la libération, définir le QMake de configuration de la compilation de la libération(!) et modifier d'autres paramètres comme bon vous semble. Ensuite, vous pouvez choisir la configuration de construire à partir de l'IDE.
P. S: Essayez d'utiliser Qt Creator 1.3.1 comme il corrige de nombreux bugs et apporte de nouvelles fonctionnalités intéressantes.
Aller à Projets > Build Settings > Ajouter > Clone sélectionné. Puis sélectionnez la nouvelle configuration de l'e.g la Libération) et d'élargir le QMake étape de génération. Définir le QMake de configuration de la compilation de libérer et vous avez terminé.
OriginalL'auteur rpg