2009-10-14 7 views
4

Je veux créer une petite application qui nécessite des raccourcis globaux. J'ai donc téléchargé la version actuelle de libqxt (0.5.1) et l'ai ouvert en tant que projet dans Qt Creator. Libqxt compile sans problèmes de cette façon, donc j'ai pensé qu'en ajoutant cela dans l'onglet Dépendances de mon projet il serait ajouté automatiquement dans la construction, comme Eclipse le fait avec les bibliothèques JAR (je sais que ce sont des IDE différents mais il semble être une caractéristique commune parmi eux).Libqxt sous Qt Creator

Que se passe-t-il? Qt Creator compile qxt avant mon projet, quand c'est nécessaire, mais quand je veux inclure ses en-têtes, Qt Creator m'avertit qu'il ne peut pas les trouver.

Probablement je manque le nom correct des en-têtes (j'ai essayé les en-têtes ont montré dans la documentation QXT: http://doc.libqxt.org/0.5.0/classQxtGlobalShortcut.html)

Soit dit en passant, je regardais le code des raccourcis globaux et je pense que je peux déchirer et utiliser dans mon application comme est et je vais créditer qxt équipe et ouvrir le code de mon application.

+0

Avez-vous ajouté le dossier d'inclusion Qxt à votre variable INCLUDEPATH qmake? – rpg

+0

Je l'ai essayé maintenant, mais ça ne marche pas. J'ai ajouté ceci dans mon fichier .pro: INCLUDEPATH + = ~/tmp/libqxt-0.5.1/deploy/include/ Il est un peu décevant à cause de ce genre de choses qui sont disponibles dans d'autres IDE. Sinon, à quoi sert l'onglet Dépendances? –

+0

Eh bien, je pense que je vais laisser ouverte cette question, mais j'ai résolu mon problème d'installation de la lib dans le système (make install). Par ailleurs, j'ai changé le chemin utilisé dans mon INCLUDEPATH en /home/dario/libqxt-0.5.1/deploy/include/et il a commencé à trouver les en-têtes mais il échoue à compiler en raison d'autres en-têtes manquants utilisés à l'intérieur. –

Répondre

6

Qt Creator ne sait pas comment exposer différentes bibliothèques à vos projets. C'est le devoir du développeur. La dépendance garantit que seuls les projets mentionnés sont déjà construits avant de construire votre projet principal.

Votre véritable souci était d'utiliser Qxt sans installation correcte. En supposant que configure ont été exécuté et libqxt ont été construits (en utilisant Qt Creator ou manuellement via qmake + make), ma solution ajoute extrait suivant (avec la personnalisation de QXT_DIR évidente) au fichier .pro:

QXT_DIR = $${IN_PWD}/../libqxt-0.5.1 
LIBS += -L$${QXT_DIR}/deploy/libs 
INCLUDEPATH += $${QXT_DIR}/deploy/include 
for(module, QXT) { 
MODNAME = $$upper($$replace(module, "(.).*", "\1"))$$replace(module, "^.", "") 
INCLUDEPATH += $${QXT_DIR}/deploy/include/Qxt$${MODNAME} 
INCLUDEPATH += $${QXT_DIR}/src/$${module} 
win32:CONFIG(debug, debug|release):MODNAME = $$join(MODNAME,,,d) 
LIBS += -lQxt$${MODNAME} 
} 

Malheureusement je Je ne sais pas si cela fonctionne dans des projets complexes.

Par défaut, Qxt est construit en mode édition, mais Qt Creator utilise le mode débogage et il conduit à des binaires cassés de projets en fonction de Qxt sous Windows. Vous devez passer votre projet en mode release ou construire Qxt en mode debug (lancez configure -debug et reconstruisez Qxt).

Dernière chose: Dans Windows, vous ne pourrez pas exécuter votre projet depuis Qt Creator même si vous l'avez construit avec succès. Vous devez copier les fichiers Qwt*.dll nécessaires (utilisez les versions -suffix d si vous êtes en mode débogage) du répertoire libqxt-0.5.1/deploy/libs au répertoire your_project/(release|debug).

+0

Merci pour votre réponse, cela a fonctionné. –

+0

+1 merci pour la conf! Puis-je vous demander ce que fait cette ligne: MODNAME = $$ upper ($$ replace (module, "(.). *", "\ 1")) $$ replace (module, "^.", ""). Merci encore! – Viet

+0

@Viet: Qxt utilise les minuscules pour les noms de modules fournis dans la variable 'QXT', mais CamelCase pour les noms de bibliothèques et certains répertoires inclus. Ceci est analogue à Qt. La ligne mentionnée définit 'MODNAME' dans la version de' module' de CamelCase en utilisant des fonctions simples ('upper()' est non-documenté, bien que cela soit évident) et des expressions régulières. – przemoc

11

from the documentation

Ajoutez le fichier .pro lignes à votre suivantes:

CONFIG += qxt 
QXT  += core gui 

Note: Bien que la construction du QxT sur Linux n'oubliez pas de faire un sudo make install sinon ce petit morceau de magie peut échouer travail.

+0

Wow cela fonctionne vraiment! Il semble que l'étape 'make install' modifie un fichier dans le SDK pour lui faire connaître son existence. On dirait que QtSDK/Desktop/Qt/473/gcc/mkspecs/features/qxt.prf –

Questions connexes