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

 C++ Discussion :

Comment créer et utiliser une librairie ?


Sujet :

C++

  1. #1
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut Comment créer et utiliser une librairie ?
    Bonjour,

    Je suis en train d'essayer de démarrer un petit projet pour m'entrainer en C++. J'ai créé un premier projet très simple et un deuxième qui est une librairie. Et en fait, j'ai plusieurs questions, sur comment distribuer la librairie...

    (j'essaie de rester dans l'optique que la librairie pourrait être utilisée par d'autres personnes, pour m'entrainer)

    J'ai réussi à créer une shared librairie depuis ma librairie sans trop de problèmes, mais c'est ensuite que j'ai plus de soucis

    tout d'abord, au niveau de la structure de mon projet principal, ou est-ce que je suis censé mettre les fichiers .h de ma librairie ?

    Actuellement, j'ai quelque chose comme ça :

    Mais ça veut dire que dans mon fichier source, je dois faire un include comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "../lib/commons/Header.h"
    Personnellement, je trouve ça vraiment horrible et je suis sûr qu'il y a mieux. Est-ce qu'il vaut mieux que je mette mon dossier dans src/ ou alors meme directement le dossier commons dans src ? Mais ensuite ça devient chiant pour la journalisation des sources ? Je suis obligé de faire un ignore de chaque dossier de sources ?

    Ensuite, pour installer la librairie, je l'ai simplement collée dans /usr/lib/. Là encore, je suis pas sûr que ce soit une bonne façon de faire... J'aurais préféré la coller simplement dans un dossier lib à la racine de mon projet, est-ce que c'est possible de faire quelque chose comme ça ?

    Finalement, au niveau de la distribution de la librairie elle-même, je suis donc censé distribué séparément la shared library et les fichiers .h à inclure ?

    Est-ce qu'on peut trouver quelque part une liste de "best practices" pour l'usage de librairie ou l'écriture de librairie ?

    Merci d'avance à la bonne âme qui voudra bien éclairer ma lanterne sur ces points

    Baptiste

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Ce qu'il est important de savoir, c'est qu'il est toujours possible, quel que soit le compilateur utilisé (ou l'IDE qui en facilite l'usage), de fournir un chemin un dossier dans lequel aller rechercher d'éventuels fichiers d'en-tête manquants.

    Cela se fait généralement en rajoutant l'option I<chemin_vers_dossier_a_utiliser> en ligne de commande (du moins, pour les compilateurs que je connais )

    A partir de là, tu peux t'organiser à peu près comme tu le souhaites, soit en regroupant les fichiers d'en-tête dans le dossier indiqué par l'option I, et avec des includes "simples" prenant la forme de
    soit en créant une arborescence plus complexe (permettant de mieux distinguer quel fichier d'en-tête intervient dans quelle partie) sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    - racine du projet
        |- src (*.cpp "globaux" (main.cpp ?)
        |    |- module1 ( *.cpp de "module1")
        |    |- module2 ( *.cpp de "module2")
        |
        |- include (*.h / *.hpp "globaux" )
        |    |- module1 ( *.h ou *.hpp de "module1")
        |    |- module2 ( *.h ou *.hpp de "module2")
    tu peux définire (racine du projet)/include comme chemin à visiter pour trouver les fichiers d'en-tête et inclure tes fichiers d'en-tête sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include "module1/UneClasseDuModule1.h"
    #include "module2/UneClasseDuModule2.h"
    Lorsque tu installe la librairie, tu fournis tout ce qui se trouve dans include (et ses sous dossiers), et il ne reste plus à l'utilisateur qu'à les placer où il veut et à... ajouter le dossier comme chemin à visiter
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Salut,

    Merci pour ta réponse très claire.

    Effectivement, l'option -I est très utile dans ces cas-là

    Et j'adhère complètement au layout présenté. c'est tout simple et ça simplifie tout.

    Merci beaucoup

    Baptiste

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer et utiliser une librairie avec ressource
    Par La March dans le forum Android
    Réponses: 0
    Dernier message: 24/06/2014, 17h20
  2. [Lazarus] Créer et utiliser une librairie .dll ou .so
    Par parhelie dans le forum Lazarus
    Réponses: 2
    Dernier message: 08/08/2010, 15h24
  3. Créer et utiliser une librairie en VS 6.0
    Par Cemos dans le forum Visual C++
    Réponses: 16
    Dernier message: 26/12/2007, 10h16
  4. [Outils][VS2005] Comment utiliser une librairie externe ?
    Par Djangogol dans le forum EDI/Outils
    Réponses: 4
    Dernier message: 25/05/2006, 11h12
  5. [MFC] Comment créer et utiliser une base Access
    Par maitre hibou dans le forum MFC
    Réponses: 3
    Dernier message: 10/05/2004, 18h11

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