IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Creator Discussion :

Ajout de bibliothèque


Sujet :

Qt Creator

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 36
    Points
    36
    Par défaut Ajout de bibliothèque
    Bonjour,

    Je tiens à signaler que je suis débutant en programmation en C++. Je me suis donc intéressé à Qt via QTcreator, sur Windows, pour sa simplicité à créer des fenêtres pour des petites applications.
    Seulement, j'ai également besoins de faire appel à plusieurs bibliothèque qui peuvent me rendre de grand service.
    J'ai installé Qwt assez facilement, il faut dire que c'est une bibliothèque pour Qt.
    Mais lorsque que je vais installer d'autre bibliothèque, cela se complique car leur compilation n'est pas forcement adapté à QtCreator et à Mingw32. Je me retrouve donc avec tout un tas de difficulté pour compiler et le taux de réussite est proche de zéro ... Je réussi parfois avec des bibliothèque très simple (genre 1 headers et quelques fichier sources en les chargeeant dans Qt creator).
    Alors voilà mes interrogationd:
    Plusieurs bibliothèqe sont fourni avec des MakeFile, mais ces fichier sont ils adapté à un compilateur ou peuvent il être utilisé avec plusieurs compilateur ?
    Existe il une procédure simple pour compiler des bibliothèques diverses avec Qt creator ?

    Si quelqu'un peu m'éclairer, je serais très reconnaissant ...

  2. #2
    Membre averti

    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 243
    Points : 398
    Points
    398
    Par défaut
    Chaque bibliothèque a son "mode d'emploi", sa procédure de configuration. Elle peut être différente à chaque fois, "CMake", "qmake", "Makefile", "Configure"... autant d'outils que tu risques de rencontrer et qu'il te faudra apprendre à maîtriser.

    Un bon point de départ est de lire les fichiers de docs de la librairie, souvent nommés "README", "INSTALL" ou quelquechose dans ce goût là.

    Comme tu débutes, sache au moins ceci :
    Sous windows, le compilateur natif (de Microsoft) est MSCV : Microsoft visual C++ (l'éditeur est Visual Studio), l'outil en ligne de commande est "nmake". MingW est en fait un port des outils Linux (compilateur GCC) sous windows.
    Tu dois trouver dans ton menu démarrer dans ton install Qt une invite de commande Qt. Si tu la lances tu as accès aux commandes Mingw. C'est à dire "ls" comme dans linux et pas "dir" comme sur windows.

    Si tu as des problèmes précis, ouvre un post par problème en indiquant le maximum de détails sur la lib que tu essaies de compiler.

    C'est assez galère au début quand on n'y connait rien de compiler des librairies tièrces. Bon courage

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Je suis actuellement en train d'essayer de compiler CGAL pour la faire fonctionner avec QT Creator.
    J'ai réussi à compiler Boost (le test proposer marche, donc à priori c'est bon)
    Par contre je bloque avec la compilation de CGAL via Cmake, il me dit qu'il ne trouve pas la librairie boost_thread, alors que j'ai mis les headers, *.dll et les *.a dans un repertoire que j'ai renseigné via les variable BOOST_ROOT et Boost_LIBRARYDIR

    La question est : Est ce que je doit renommer les *.a ou les *.dll pour qu'il soit reconnu par cmake ? ou le problème est ailleurs ? ...

  4. #4
    Membre averti

    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 243
    Points : 398
    Points
    398
    Par défaut
    A la compilation il a besoin des includes (*.h) et des librairies (*.lib). Il n'est pas conseillé du tout de recopier ces fichiers de ton repertoire boost vers celui de CGAL. Tu dois indiqué dans la configuration de CMake où se trouve la librairie boost, son repertoire src ou include et son repertoire lib.

    Ensuite à l'exécution du programme, il faut les *.dll, ceux là tu dois les recopier depuis les répertoires de tes libs dans le répertoire de ton exécutable.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Merci pour la réponse, mais j'avais déjà compris tout ça ...
    Je n'ai rien recopié vers CGAL, et j'ai bein indiqué les répertoires des includes et des lib via des variable ajouté sous Cmake_gui. Par contre, comme j'essaye de compiler en statique, ce n'est pas des *.dll mais des *.a que j'ai (sous mingw, les binaire statique sont des *.a, si je ne me trompe pas).
    Je me pose les questions suivante : $
    comment cmake reconnait les bibliothèque adéquate qui sont dans le répertoire renseigné : par leur nom ou par leur contenu ?

    Faut il dire à cmake que l'on compile en statique, et par qu'elle variable on fait ça ?

  6. #6
    Membre averti

    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 243
    Points : 398
    Points
    398
    Par défaut
    Là je passe le relais...

  7. #7
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Citation Envoyé par vinceouille Voir le message
    Par contre, comme j'essaye de compiler en statique, ce n'est pas des *.dll mais des *.a que j'ai (sous mingw, les binaire statique sont des *.a, si je ne me trompe pas).
    . Mais où apprenez-vous ça, il faut buter de toute urgence toute source d'âneries pareilles ! Ce genre de gars devrait pouvoir s'exprimer aux murs et en recevoir des réponses violentes, il ne peut pas parler à un seul être humain sous peine de lui mettre toutes les idées de travers !

    Non, non et non, jamais. Tu n'arriveras jamais à lier une seule DLL sans .a. Tu as toujours un .a sous GCC et un .lib sous VC. La différence, c'est que, en dynamique, il contient les points d'entrées de la DLL ; en statique, il contient toute la DLL.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    ok, ok ... merci pour la réponse un peu agressive mais bon ... je ne l'ai appris de personnes, je débute et j'essaye d'apprendre via les doc que je trouve à droite à gauche et j'ai peut être mal interpréter les choses... Il n'y a donc personne à buter à part le web ...

    Mais ça ne répond pas vraiment à mes interrogation. Reprenons, corrigez moi (gentiment) si je me trompe : si on compile en statique il faut linker sur les *.a et si on veut linker en dynamique il faut linker sur les *.dll, les *.a servant à repéreré les point d'entrer.

    En ce qui me concerne, je cherche à compiler en statique, je n'ai donc besoin à priori que des *.a.

    Et mon soucis, c'est que Cmake ne semble pas trouver les *.a de boost, je me dit alors qu'il est configurer pour préparer une compilation dynamique et cherche des donc des dll qu'il ne trouve pas ...

  9. #9
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Citation Envoyé par vinceouille Voir le message
    Il n'y a donc personne à buter à part le web ...
    Le Web ne s'est pas créé tout seul .

    Citation Envoyé par vinceouille Voir le message
    si on compile en statique il faut linker sur les *.a et si on veut linker en dynamique il faut linker sur les *.dll, les *.a servant à repéreré les point d'entrer.
    Non. Qu'il y ait des DLL ou pas, à la compilation, ça ne change rien. Strictement rien. Tu peux les renommer, les graver sur un CD et les supprimer de ton disque dur, les chiffrer avec Blowfish ou faire ce que tu veux d'autre avec, ça n'influencera rien du tout à la compilation.

    Les .a servent lors de la compilation à soit déterminer les symboles dans la DLL, soit à donner le code binaire de ces symboles.

    Les DLL servent, à l'exécution, à fournir le code des symboles qu'on demande.

    Citation Envoyé par vinceouille Voir le message
    En ce qui me concerne, je cherche à compiler en statique, je n'ai donc besoin à priori que des *.a.
    Pas que tu n'auras besoin que des .a... tu n'auras que des .a, ce seront eux qui contiendront le code compilé.

    Au niveau du compilateur, ça ne change strictement rien que les .a soient statiques ou dynamiques : le linker voit ce dont il dispose et fait ce qu'on lui demande implicitement à ce moment.

    Tu auras des .a totalement différents pour du statique ou du dynamique : le premier contiendra une série d'opcodes, tandis que l'autre n'agira (en gros) que comme une table de correspondance fonction-binaire. Rien à configurer, sauf à la compilation de la bibliothèque (boost, en ce cas).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    ok merci beaucoup, je crois que c'est plus claire ...
    Donc si cmake ne trouve pas la bibliothèque (en l’occurrence "boost_thread", je ne l'invente pas c'est cmake qui me le "dit"),
    le problème ne peut provenir que de :
    - un problème sur le linkage (mauvais chemin) du headers ou du *.a
    et/ou
    - la bibliothèque n'est pas correctement compiler donc il ne trouve pas ce qui cherche, le *.a n'étant pas correct
    - ou autre chose (je persiste sur la configuration de cmake mais forcement sur static/dynamiqiue)

Discussions similaires

  1. comment ajouter une bibliothèque
    Par niele1 dans le forum Visual C++
    Réponses: 2
    Dernier message: 15/10/2007, 12h03
  2. Ajouter des bibliothèques dans un Makefile
    Par insa59 dans le forum GTK+ avec C & C++
    Réponses: 24
    Dernier message: 11/04/2007, 18h50
  3. Réponses: 1
    Dernier message: 16/03/2007, 10h34
  4. [Debutant] Ajouter la bibliothèque CxImage à un projet
    Par BNS dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 09/02/2006, 21h04
  5. [LIBRAIRIE] ajout de bibliothèque
    Par itsmii dans le forum C++
    Réponses: 1
    Dernier message: 11/11/2004, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo