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 :

Partager un projet c++ avec les dépendances des bibliothèques


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    qdqsdqd
    Inscrit en
    Juin 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Dominique Rep.

    Informations professionnelles :
    Activité : qdqsdqd

    Informations forums :
    Inscription : Juin 2014
    Messages : 17
    Points : 32
    Points
    32
    Par défaut Partager un projet c++ avec les dépendances des bibliothèques
    Bonjour, pour débuter en C++ je me suis lancé dans un projet assez simple, un 2048.
    Auparavant je faisais du C avec des Makefiles uniquement pour des os type UNIX, mais désormais j'aimerais utiliser le C++ et surtout pouvoir partager mon jeu avec mes amis, qu'ils soient sur Windows, Linux ou MacOs.
    Pour l'aspect graphique/reseau j'utilise la SFML 2.4 que j'affectionne particulièrement (par rapport à son approche simplifiée, son développement actif, sa documentation Doxygen...) ainsi que la libxml++ (C'est la seule lib que j'ai trouvé intéressante pour parser du XML. Cependant si vous en avez une autre je suis preneur, la dernière version, la 3.0 ne comporte pas les mises à jours correctives de la libxml2, lib qui récemment à eu affaire à une grosse faille de sécurité: https://www.cvedetails.com/vulnerabi...t-Libxml2.html).

    Pour compiler, j'aimerais utiliser cmake (je suis actuellement en train de lire mastering-cmake.pdf). Mais je suis un peu perdu. Pour mon environnement de développement, j'ai évidemment installé là SFML, ajouter le répertoire d'installation à ma variable LD_LIBRARY_PATH (ce n'est pas la meilleure méthode, mais ça à le mérite d'être compréhensible pour moi) et j'ai installé la libxml++3.0 dans sa version développement.

    Sachant que mon projet est open-source, est-ce que je dois créer un dossier "libs" avec dedans les librairies que j'utilise ? Si oui, est-ce que je dois mettre les librairies en version statique ou dynamique ? est-ce que les utilisateurs de mon projet auront-besoin des versions de développement des libs ?

    D'avance merci, j’espère avoir été assez précis sur les détails...

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    libxml++ est assez lourde à configurer au début et à l'utilisation... Elle a en particulier beaucoup de dépendances qui sont peut-être classiques sous linux, mais qui sont vraiment galère sous windows... J'ai récemment utilisé pugixml qui m'a semblé assez intéressante pour les besoins simples.

    Pour ce qui est de la livraison, tout dépend de si tu te lies statiquement ou dynamiquement à tes bibliothèques. Si tu te lies statiquement, l'exécutable est autonome. Si tu te lies dynamiquement, tu auras besoin de livrer avec les bibliothèques partagées, les .so ou .dll (ou de demander à tes utilisateurs qu'ils les aient installées au préalable à un endroit accessible). En général, on fait un mélange des deux en fonction de ce que proposent les bibliothèques utilisées. Par exemple, sous windows avec visual C++, les bibliothèques de base du C++ (qui définissent string, iostream...) sont forcément liées dynamiquement, et demandent obligatoirement de passer par un setup pour être installées, il ne suffit pas qu'elles soient dans le chemin de recherche standard.

    Est-ce que ça répond à tes questions ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    qdqsdqd
    Inscrit en
    Juin 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Dominique Rep.

    Informations professionnelles :
    Activité : qdqsdqd

    Informations forums :
    Inscription : Juin 2014
    Messages : 17
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    libxml++ est assez lourde à configurer au début et à l'utilisation... Elle a en particulier beaucoup de dépendances qui sont peut-être classiques sous linux, mais qui sont vraiment galère sous windows... J'ai récemment utilisé pugixml qui m'a semblé assez intéressante pour les besoins simples.
    Merci beaucoup, c'est effectivement ce type de librairies que je cherche, je ne suis pas du tout pro encore, seulement étudiant et cette librairie semble plus accessible pour moi, vous avez parfaitement répondu à ma question par rapport à la libxml

    Citation Envoyé par JolyLoic Voir le message
    Pour ce qui est de la livraison, tout dépend de si tu te lies statiquement ou dynamiquement à tes bibliothèques. Si tu te lies statiquement, l'exécutable est autonome. Si tu te lies dynamiquement, tu auras besoin de livrer avec les bibliothèques partagées, les .so ou .dll (ou de demander à tes utilisateurs qu'ils les aient installées au préalable à un endroit accessible). En général, on fait un mélange des deux en fonction de ce que proposent les bibliothèques utilisées. Par exemple, sous windows avec visual C++, les bibliothèques de base du C++ (qui définissent string, iostream...) sont forcément liées dynamiquement, et demandent obligatoirement de passer par un setup pour être installées, il ne suffit pas qu'elles soient dans le chemin de recherche standard.

    Est-ce que ça répond à tes questions ?
    J'avoue ne pas savoir quels sont mes besoins, je suppose par exemple que la SFML et PUGIXML ne seront probablement pas installées par défaut... SI je les lies statiquement cela signifie qu'elles seront "incluses" dans le binaire produit lors de la compilation c'est cela ? (Merci de ne pas m'en vouloir si je suis à côté de la plaque...)

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    La partie utilisée d'une bibliothèque statique est en effet inclue dans l'exécutable lors de la phase de link.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    qdqsdqd
    Inscrit en
    Juin 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Dominique Rep.

    Informations professionnelles :
    Activité : qdqsdqd

    Informations forums :
    Inscription : Juin 2014
    Messages : 17
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    La partie utilisée d'une bibliothèque statique est en effet inclue dans l'exécutable lors de la phase de link.
    Finalement c'est le plus simple... J'ai pas besoin de me demander si l'utilisateur final possède ou non la lib, non ?

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    En effet, pour moi, ça devrait être le choix par défaut. En résumé, le choix statique par rapport à dynamique :

    + C'est plus simple à déployer
    + C'est plus simple à développer
    - Ça fait des exécutables plus gros (et surtout, le code peut être dupliqué à chaque exécutable qui l'utilise, au lieu d'être mis en commun)
    - Ça ne permet pas de faire des plug-ins, tout doit être connu à la compilation
    + Ça offre au compilateur plus de possibilités d'optimisations
    + Chaque OS considère les bibliothèques dynamiques différemment, c'est plus difficile de faire du code portable.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    qdqsdqd
    Inscrit en
    Juin 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Dominique Rep.

    Informations professionnelles :
    Activité : qdqsdqd

    Informations forums :
    Inscription : Juin 2014
    Messages : 17
    Points : 32
    Points
    32
    Par défaut
    Ouo ! je me permet de dire vraiment merci pour la pugixml qui tient en 1 fichier cpp (12000 lignes tout de même) et 1 .hpp, au final c'est très simple a intégrer, meme pas besoin de la transformer en bibliothèque ^^

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

Discussions similaires

  1. jouer avec les couleur des lignes de diplaytable
    Par fouyou dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/04/2007, 10h01
  2. [MySQL] remplir un tableau avec les noms des champs d'une table
    Par solidaritok dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/04/2007, 13h47
  3. Réponses: 2
    Dernier message: 01/08/2006, 13h38
  4. probleme avec les posts des formulaires
    Par axel-erator dans le forum Langage
    Réponses: 6
    Dernier message: 04/05/2006, 11h41

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