12
votes

Bâtiment avec QMake sur Linux - Comment prévenir QMake de lier à QTcore et QTui

J'ai une bibliothèque partagée (sans dépendance QT) [Bibliothèque B] qui relie une autre bibliothèque partagée (sans dépendance QT aussi) [Bibliothèque A].

J'utilise QMake et QT Creator 1.3. Le problème est que lorsque je construirai la bibliothèque B et exécutez LDD sur l'exécutable, il est lié à QTcore et QTGUI, qui tirent tous deux dans de nombreux fichiers non ordonnés, ce qui entraîne une exécutable qui prend de temps à charger et n'a pas non désiré. Dépendances. P>

J'ai essayé à peu près tout pour arrêter QMake de relier ces bibliothèques à la bibliothèque b. P>

Un extrait de mon fichier de projet pour la bibliothèque B est présenté ci-dessous: P>

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
}


1 commentaires

Quelle version de qt? J'ai essayé avec 4.6.1 et avec qt - = GUI de base, le maquillage créé par QMake n'a pas inclus les DLL QT, en supprimant cette ligne les incluse dans le maquillage.


5 Réponses :


3
votes

Vous pouvez essayer avec xxx


5 commentaires

J'ai marqué votre réponse, car elle m'a donné la confiance pour regarder de plus près ce qui était en train d'être construit - et j'ai alors compris que (contrairement à mes autres projets définis pour libérer la configuration par défaut), ce projet a été réglé sur Par défaut - Enfait, il n'y avait pas d'autre configuration indiquée par QTCreator, même si la syntaxe de fichier (configuration de la) .Pro est identique aux autres projets. Savez-vous ce qui pourrait causer cela?


Regardez et / ou supprimez le fichier YourporjectName.Pro.User.


@Mihai: C'était la première chose que j'ai faite (avant de poster ma question), cela n'a fait aucune différence.


Ah désolé. C'était un tir dans le noir - de nombreuses personnes ne réalisent pas que les * fichiers utilisateur peuvent également influencer les artefacts de construction résultants.


La ligne de libs est-elle vraiment nécessaire? Cela signifie que si je n'ai pas besoin de la GUI Libs, QT - = GUI suffit à désactiver -qtgui.



0
votes

Autant que je sache, QT Creator ne prend pas les configurations .pro en considération si vous ne les avez pas configurées séparément de l'IDE.

Vous devriez aller aux paramètres du projet, cloner la configuration de débogage, renommer la version informatique, définissez la configuration de la version QMake pour publier (!) et modifier d'autres paramètres au fur et à mesure que vous le voyez. Ensuite, vous pouvez choisir la configuration à la construction de l'IDE.

P.s: essayez d'utiliser QT Creator 1.3.1 car il corrige beaucoup de bugs et apporte de nouvelles fonctionnalités intéressantes.


2 commentaires

HMM, il semble avoir été un bug de 1.2.1. Après avoir installé v3, le problème a disparu ... mais je sais que pour l'avenir, lorsque je souhaite créer ma propre configuration, pourriez-vous définir les étapes requises dans "Clonage" une configuration existante pour en créer un nouveau?


Allez dans Projets> Réglages de construction> Ajouter> Clone sélectionné. Sélectionnez ensuite la nouvelle configuration (version E.g) et développez l'étape de construction QMake. Définissez la configuration de la version QMake pour publier et vous avez terminé.



13
votes

Mettez config - = qt dans votre fichier .pro.


1 commentaires

Ça marche ici. C'est la méthode utilisée pour les projets de l'arborescence source QT qui ne lient pas contre Qt. En général, cela fonctionne. Voir src / winmain / winmain.pro dans l'arborescence source QT pour un exemple. Pouvez-vous vérifier: (1) vous avez réellement couru à nouveau QMake et tout reconstroré (faire une construction complètement propre après avoir exécuté QMake). (2) Aucune des bibliothèques que vous avez liées à l'encontre est elle-même liaison contre LIBQTCORE ou LIBQTGUI (E.G. Datelib_Release ne doit pas convenir à Qt).



1
votes

J'ai eu un problème similaire. Ce que j'ai fait était de créer un nouveau projet de bibliothèque avec Qtcore et Qtgui. Suppression de tous les fichiers inutiles créés par l'assistant. Ajout de mes fichiers au dossier de projet et modifié le fichier * .pro. Il a commencé à fonctionner correctement.

C'était un problème avec QTCreator, il n'est pas lu correctement .Pro Génération de fichier .Pro.utilisateur, sorcière QtCreator Utilisez-la à la construction et à l'assistant génère un fichier correct .Pro.utilisateur.

Je l'ai fait avec Qt 4.7

souhaite cette aide.


0 commentaires

2
votes

Pour les applications, vous le faites comme ceci:

TEMPLATE = app
CONFIG = console


0 commentaires