Journal On est pas vendredi mais quand même, kdevelop, autoconf automake autoincompréhensible

Posté par  .
Étiquettes : aucune
0
30
jan.
2007
Bonjour, hier soir j'ai voulut tester un petit peu de code C++, je suis pas un grand spécialiste et justement je me pose une question.
Voilà, j'ai tenté une compilation d'un code pour tester SDL + OpenGL et là le drame.
pour générer arriver à un truc du genre (il me fallait juste ajouter les lib et include pour SDL quelque part mais je sais pas où...)
g++ -Iinclude -I/usr/include/SDL -I/usr/include/SDL -o bin/monfichier src/monfichier.cpp -Llib -lSDL -lglut
Et bien je cherche encore.
Bref je suis allé voir du coté Eclipse CDT et là bizarrement je n'ai pas eu le moindre mal à configurer mon projet sans le moindre problème.
Bref ok, mon truc c'est plutôt Java ou PHP, mais sortir la grosse artillerie pour vouloir faire quelques petits tests, c'est plutôt décourageant.
Alors, automake et autoconf a certes des avantages pour la distribution de source, mais peut-être que quand on distribue un IDE qui les utilisent, ils faudraient peut-être faire un minimum pour que ça soit utilisable.
Oui je sais les grincheux me diront que si je ne suis pas content, je pourrait toujours développer un truc pour ça, seul hic, je ne comprend absolument pas comment celà marche, je n'en ai pas la nécessité (CDT est mille fois plus simple), c'est juste que le peut de doc qu'on trouve à ce sujet nous explique que c'est complètement imbuvable et la lecture d'un configure.in est complètement imcompréhensible...
  • # Yep

    Posté par  . Évalué à 2.

    Moi j'ai découvert depuis 3 jours SCons, depuis, autogen/configure et Makefile à la poubelle !! C'est tellement rapide et souple à mettre en ½uvre pour tout faire que y'a plus de raison de changer :-)
    En plus la doc est bien faîtes : http://scons.org/
    • [^] # Re: Yep

      Posté par  (site web personnel, Mastodon) . Évalué à 1.

      avant de continuer avec scons, je te conseille d'ailler voir cmake ...

      M.
      • [^] # Re: Yep

        Posté par  . Évalué à 2.

        Effectivement, puisque dans le match CMake vs SCons pour KDE4, c'est finalement CMake qui est arrivé vainqueur.

        J'avais utilisé SCons et je le trouvais pas trop mal pour des petits projets avec de petits besoins mais lorsqu'il faut détecter tout un tas de choses par rapport à l'environnement, ça devient moins simple.
        • [^] # Re: Yep

          Posté par  (site web personnel) . Évalué à 1.

          [+++]
          J'avais commencé par utiliser Scons pour koinkoin. C'est sympa pour des projets indépendants, mais c'est finalement lourd pour gérer les versions des bibliothèques, les répertoires d'install...

          Depuis j'utilise le système standard de build de kde basé sur les autotools (kde3 only pour le moment). C'est finalement plus simple que Scons. Et je passerai à CMake pour KDE4.
  • # Tout pareil

    Posté par  (site web personnel) . Évalué à 3.

    Je développe en C++ et je suis plutot orienté Qt et je n'ai jamais trop compris comment fonctionnait les autotrucs. C'est pour moi d'une complexité inutile.
    Même si je trouve ces outils très puissants : vérif que les dépendances sont là, etc... Je n'ai jamais réussi à comprendre plus que l'ajout d'un fichier dans un projet existant.
    Pour moi c'est une usine à gaz (volontairement?) obscure qui ont en plus le bon gout d'avoir des versions incompatibles entre elles (pas de rétro-compatibilité)
    Pour l'instant QMake m'a toujours suffit et il a l'immense avantage d'être très simple.
    Quand je développe, ben je veux développer, pas passer des heures à chercher à comprendre comment fonctionnent les outils qui sont supposés aider la compilation.
    Comme dit plus haut, tu trouvera sans doute ton bonheur ailleurs : qmake, cmake, scons, jam, et...
    PS : KDevelop peut utiliser des fichiers projets QMake.
    • [^] # Re: Tout pareil

      Posté par  . Évalué à 2.

      Personnellement, je n'ai jamais rien compris aux autotools non plus, mais :
      1) Je n'ai jamais trouvé un seul tutorial/doc clair et préci
      2) Soit les gens prennent ca pour acquis, soient ils disent que c'est de la merde car trop complexe.

      Ma conclusion est donc la suivante :
      - du point 1) j'en tire la conclusion qu'il n'y a effictevement aucune façon simple et claire d'expliquer le fonctionnement des autotools, point qui corrobore leur obscurité pour le néophite.
      - Mais le point 2) tend a montrer que ceux qui ont sérieusement mis les mains dans le camboui ont compris le secret-qui-n'est-pas-facile-a-expliquer, et que maintenant ils vivent dans la lumière et le bonheur. Les autres n'ont passé le cap pour comprendre le truc.

      En tout cas, j'aimerais bien maîtriser les autotools, ca a l'air très puissant et pratique.

      (en croisant les doigts pour qu'il n'y ait pas de gourou du autotools qui passe pour dire "non, non, en fait c'est réellement trop complexe".)
      • [^] # Re: Tout pareil

        Posté par  . Évalué à 1.

        Salut,

        moi je me suis mis aux autotools depuis quelques jours, et en fait bien expliqué sur un exemple très simple ben ca marche.
        En gros dans le configure.in c'est une succession de macros (sans doute shell) qui permettent de générer le gros script shell configure.
        Les Makefile.am ensuite on mets les sources que l'on veut dans des variables avec des noms predefinis.
        Pour un exemple simple regardez par la : http://ultrastar-ng.cvs.sourceforge.net/ultrastar-ng/UltraSt(...) (attention pub inside :) )

        Vincent
      • [^] # Re: Tout pareil

        Posté par  (site web personnel) . Évalué à 3.

        ceux qui ont sérieusement mis les mains dans le camboui ont compris le secret-qui-n'est-pas-facile-a-expliquer, et que maintenant ils vivent dans la lumière et le bonheur.

        J'ai mis les mains dans le cambouis, à plusieurs reprises, j'ai même utilisé libtool c'est dire. J'ai appris m4. Et maintenant je vis dans la peur et l'obscurité.

        Les autotools ça n'est ni puissant ni pratique (ni vraiment portable en dehors de linux..)
        • [^] # Re: Tout pareil

          Posté par  . Évalué à 2.

          Les autotools ça n'est ni puissant ni pratique (ni vraiment portable en dehors de linux..)

          Si, les autotools sont portables en-dehors de Linux. Le probleme, c'est qu'il faut que le projet qui les utilise le soit aussi.
          • [^] # Re: Tout pareil

            Posté par  (site web personnel) . Évalué à 3.

            ben moi je vais te répondre non, je me suis suffisament pris la tête il y a quelques années à essayer de faire marcher libtool et ses potes sur divers unix proprios avec leurs outils proprio. Et à chaque update de automake ou autoconf ou libtool, y'avait quelque chose de nouveau qui cassait.

            Ou alors il faut dire que ça n'est portable que si on utilise les outils/compilo gnu, à ce moment là d'accord.
      • [^] # Re: Tout pareil

        Posté par  (Mastodon) . Évalué à 2.

        pour ton problème 1, il y a autobook : http://sources.redhat.com/autobook/
        ça part de petits problèmes simples et ça va crescendo...
    • [^] # Re: Tout pareil

      Posté par  (site web personnel) . Évalué à 1.

      Je laisse KDevelop gérer tout le bouzin pour moi. J'ai juste à déclarer les cibles et quels fichiers utiliser pour la construire et ça roule...
  • # Solution

    Posté par  (site web personnel) . Évalué à 5.

    Allez, tiens, j'ai jamais utilisé kdevelop (mais je suis utilisateur de kde), donc testons...
    Lancement de kdevelop. Projet > Nouveau projet.
    Je choisis C++ > KDE > Simple application KDE basée sur Designer. Je met le projet (appelé test) dans /tmp. Suivant, suivant, suivant, terminer.
    Tiens, un onglet "configurer automake" à droite, cliquons dessus. Une petite icône avec un espèce de clef dessus nommée "options", cliquons aussi.
    Un petit tour dans l'onglet "Bibliothèques", et là, ho miracle, je peux ajouter des bibliothèques, comme "-lm" (le -l est déjà présent dans la boite de dialogue)... Pour les "-L", il y a dans le premier onglet un truc nommé "drapeaux de l'éditeur de liens (LDFLAGS)".
    Il m'a fallut quoi... 3 minutes pour faire tout ça, alors que j'avais jamais utilisé kdevelop.
    • [^] # Re: Solution

      Posté par  . Évalué à 1.

      Sinon il y a des choses sympathiques dans les Makefile fait maison (et c'est comme cela qu'il faut faire) :
      `sdl-config --libs` par exemple ou `pkg-config --libs cairo`
      • [^] # Re: Solution

        Posté par  . Évalué à 2.

        Et si sdl-config n'est pas dans le PATH ? S'il y a plusieurs versions de SDL ? Et si les .a ne sont pas installés ? Et si SDL est une dépendance optionnelle ? Et comment on choisit là où il faut installer l'application dans un Makefile traditionnel ?

        Mais je fais comme toi, car je n'ai jamais compris les autotools... et quand on veut distribuer un code, c'est pas simple...
        • [^] # Re: Solution

          Posté par  . Évalué à 2.

          sdl-config c'est la merde à cause de la dificulté à cross-compiler avec.

          Sinon on peut utiliser AC_ARG_MACHIN pour permettre de mettre le path de sdl-config en option à configure, ou shunter le test si SDL_CFLAGS et SDL_LIBS sont positionnés. Je crois me rappeler que le configure.in de GCompris utilise un truc comme ça pour la xcompil.
        • [^] # Re: Solution

          Posté par  . Évalué à 0.

          Et si les .a ne sont pas installés ?
          On es installe? Parce que bon, pour développer, il faut quand meme avoir l'environnement de dev. Si tu as pas le compilateur...

          Et si SDL est une dépendance optionnelle ?
          On met des AC_ARG_ENABLE dans le configure.in, c'est là pour ça.

          Et comment on choisit là où il faut installer l'application dans un Makefile traditionnel ?
          UUn makefile traditionnel? ça veut rien dire. Pour moi le traditionnel c'est celui généré par autoconf.automake, et il y a le --prefix qui est là pour ça. Sinon ça dépend de l'auteur, faut lire la doc.
          • [^] # Re: Solution

            Posté par  . Évalué à 5.

            Me dis pas que tu as lu le post auquel je répondais ? Je ne te croirai pas !
    • [^] # Re: Solution

      Posté par  (site web personnel, Mastodon) . Évalué à 4.

      toi t'es trop fort, tu veux pas être mon copain ? :)

      M.
    • [^] # Re: Solution

      Posté par  . Évalué à 1.

      Le seul problème avec kdevelop, c'est que leur webmaster étant un veau de première, ils ont blacklisté la planète entière et notamment pas mal de classes d'adresse Free. Alors pour avoir la doc quand tu es bloqué, c'est pas pratique.
      Pire, avant j'accédait à www.kdevelop.org par Tor, mais on dirait que maintenant ils ont blacklisté aussi les oignons Tor. Les choses se compliquent.
  • # autoproject?

    Posté par  . Évalué à 2.

    Pour un cas comme ça autoproject peut peut-être aider?


    autoproject interviews the user, then creates a source package for a
    new program which follows the GNU programming standards. The new
    package uses autoconf to configure itself, and automake to create the
    Makefile. `make distcheck' succeeds.
    The idea is that you execute autoproject just once when you start a
    new project. It will ask a few questions, then create a new directory
    and populate it with standard files, customized for the new project.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.