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 :

Déploiement d'un programme C


Sujet :

C

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut Déploiement d'un programme C
    Hello,

    Voilà j'ai un projet C qui se termine et qui pour l'instant n'est déstiné qu'à linux, et nous souhaitons proposer un package à installer facilement et de manière standard.

    Nous avons à la base un makefile fait main, avec l'arborescence suivante:
    project
    ... makefile
    ... src/
    ... headers/
    ... bin/
    ... man/
    ... doc/
    ... data/

    Pour le déploiement, nous avons, pour le moment, opté pour les autotools et les commandes ./configure, make et make install.

    Ca semble plus ou moins fonctionner, mais honnêtement on ne maitrise pas vraiment ces outils et on les trouvent franchement difficile à comprendre et à manipuler.

    J'aimerai donc savoir si vous connaissez d'autres moyens de déployer un package de manière standard? Je connais (de nom) cmake, ou ant, mais quels en sont les avantages? Y'a t-il un standard plus utilisé (et dans l'idéal plus facile à utiliser) que les autres?

    N'hésitez pas a donner vos avis... Ils nous seront précieux.
    Merci d'avance!

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par vinzzzz Voir le message
    Hello,

    Voilà j'ai un projet C qui se termine et qui pour l'instant n'est déstiné qu'à linux, et nous souhaitons proposer un package à installer facilement et de manière standard.

    Nous avons à la base un makefile fait main, avec l'arborescence suivante:
    project
    ... makefile
    ... src/
    ... headers/
    ... bin/
    ... man/
    ... doc/
    ... data/

    Pour le déploiement, nous avons, pour le moment, opté pour les autotools et les commandes ./configure, make et make install.

    Ca semble plus ou moins fonctionner, mais honnêtement on ne maitrise pas vraiment ces outils et on les trouvent franchement difficile à comprendre et à manipuler.

    J'aimerai donc savoir si vous connaissez d'autres moyens de déployer un package de manière standard? Je connais (de nom) cmake, ou ant, mais quels en sont les avantages? Y'a t-il un standard plus utilisé (et dans l'idéal plus facile à utiliser) que les autres?

    N'hésitez pas a donner vos avis... Ils nous seront précieux.
    Merci d'avance!
    ton approche me semble correcte.

    Tu en as 2.

    1. Utiliser une "popup" d'installation à travers le Web.
    2. Faire télécharger le package.


    Dans la solution 2, tu as 2 choix : que ce qui est téléchargé est
    1. un script,
    2. ou bien directement le package (en général via tar et gzip ou compress)


    • Dans la solution 1, tu exécutes en allant cherche sur le net chaque fichier et en créant ton arborescence en local.
    • Dans la solution 2, déjà tu demandes de faire un gunzip (ou uncompress) puis tar -xvf. Ensuite comme vous l'avez décidé un .configure, make, et make install.



    Donc votre solution est parfaite.

    Qu'est-ce qui t'embête ??

    C'est facile de faire un script, non ?
    C'est facile de faire un make , non ?

    Sinon pose les questions que tu as..

    Mais tu as la bonne solution...



    En ce qui concerne les outils, ne te méprends pas. Dans ceux que tu cites il n'y en a qu'un, vraiment. C'est make.

    make install est juste une cible dans le makefile qui va aller copier les binaires (dans ton bin) au bon endroit sur le système (par exemple /share/bin).

    configure est un script (à récupérer et à adapter par exemple de GNU ou de n'importe quel package largement répandu), qui va juste chercher la machine, le compilo utilisé, en général mettre des options de compil (modifiables à la main), etc... Tu peux le faire toi-même. En gros c'est uniquement les options de compil et éventuellement certains flags (POSIX, -O2, -MIPS, ..., éventuellement 64 ou 32 bits), etc etc.. Ca peut aussi être juste un script qui détermine la machine et copie un fichier d'options de Makefile pour un certain système dans un fichier d'options par défaut que vous utiliserez dans le Makefile général. (par exemple tu as : Makefile (qui inclus Makefile.options), MakefileOptions.HPUX, MakefileOptions.SUN, MakefileOptions.Linux, ... Ton configure peut alors juste dterminer la machine, et copier le bon MakefileOptions.* dans Makefile.options)

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    Ce qui m'embête est essentiellement la difficulté de prise en main des autotools (pour générer le script configure par exemple). Comment l'utilisateur procède pour désinstaller les binaires/manuels et autre? Comment lancer un test d'exemple ? Peut être qu'on s'est mal documenté, mais on y a passé (à notre gout) trop de temps pour un résultat basique, qui marche certes, mais qui ne nous satisfait pas tout a fait, d'où ma question...

    ... qui était de savoir si il y avait une méthode préférentielle, plus simple a mettre en œuvre que les autotools... Je n'ai encore jamais eu l'occasion de déployer vraiment un logiciel, d'où peut être la naïveté de mes questions.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par vinzzzz Voir le message
    Ce qui m'embête est essentiellement la difficulté de prise en main des autotools (pour générer le script configure par exemple). Comment l'utilisateur procède pour désinstaller les binaires/manuels et autre? Comment lancer un test d'exemple ? Peut être qu'on s'est mal documenté, mais on y a passé (à notre gout) trop de temps pour un résultat basique, qui marche certes, mais qui ne nous satisfait pas tout a fait, d'où ma question...

    ... qui était de savoir si il y avait une méthode préférentielle, plus simple a mettre en œuvre que les autotools... Je n'ai encore jamais eu l'occasion de déployer vraiment un logiciel, d'où peut être la naïveté de mes questions.

    Ben comme tu as fait "make install" tu fais "make desinstall" ou "make remove".

    Avec la même procédure d'appel :

    A l'installation :

    ./configure
    make
    make install

    pour enlever

    ./configure
    make remove


  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    Oui en effet (c'est make uninstall au passage ) j'avais pourtant lu pas mal de truc sur les autotools (et je les avaient d'ailleurs trouvé soit trop complexe, soit trop succin...)

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par vinzzzz Voir le message
    (c'est make uninstall au passage )
    Comme dit plus haut, aucune importance, ce n'est pas un outil, c'est une cible dans ton make à toi... c'est toi qui décide comment tu l'appelles..

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    Pas exactement, d'aprés ce que j'ai compris, si j'utilise les autotools, le makefile sera généré automatiquement.

    Connais tu les avantages de cmake par rapport aux autotools (si il y en as...) ?

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par vinzzzz Voir le message
    Pas exactement, d'aprés ce que j'ai compris, si j'utilise les autotools, le makefile sera généré automatiquement.

    Connais tu les avantages de cmake par rapport aux autotools (si il y en as...) ?
    non, je ne connais pas les outils automatiques, mais c'est tellement simple à se faire un script et un make... Il suffit de copier les makefile par exemple de libtiff ou d'autres packages pour avoir tous les "flavors" possibles..

    Mais tu peux simplifier tes compils au max..

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    d'ailleurs, en note, en général sous unixoides le répertoires "headers" est plutôt appelé "include", et tu peux ajouter un répertoire doc qui as la doc sous forme html par exemple, et non pas seulement au format man..

  10. #10
    Membre éclairé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Par défaut
    Bonjour,
    Les autotools ne sont pas nécessaires a une generation/installation de binaires. tu peux rester sur les cibles make install, mproper, doc, clean.
    A moins de prévoir le support de multiples plateformes, l'usage d'un bon nombres d'options de compilation, la compilation croisée ...
    Par dessus tu fais un script d'install et voilà !

    Je fais parfois du portage et suis souvent amené a plonger dans les méandres d'un configureMakefile.am, c pas facile a maîtriser car il y a plusieurs langages a connaitre.

    j'ai entendu parler de scons (basée sur python) mais je n'ai aucune experience là-dessus.

    Si tu trouves n'hésites pas a nous faire partager ta trouvaille

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    Je vais regarder du coté de cmake qui semble simple d'utilisation... On verra ce que ca donne merci a vous en tout cas!

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/06/2009, 11h35
  2. Problème Déploiement Programme
    Par aurelien2723 dans le forum JDBC
    Réponses: 1
    Dernier message: 10/07/2008, 11h50
  3. Déploiement d'un programme
    Par el_pilacho dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/05/2007, 17h36
  4. [MFC] Icône du programme de déploiement
    Par annedjomo dans le forum MFC
    Réponses: 5
    Dernier message: 04/12/2005, 12h12

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