Partage
  • Partager sur Facebook
  • Partager sur Twitter

makefile

Sujet résolu
    24 août 2018 à 21:32:42

    Bonsoir,

    J ai suivi le cours c++(oui je sais"c est mal " "il est pas bon"  mais bon  j ai chercher ailleurs aussi.)

    Comme tout le monde j ai été bloqué au moment ou on me disait "l heure est venu pour toi de faire un navigateur"

    Frémissement de plaisir le long de l 'échine et la bim la tuile le petit chat est mort webKit... est parti remplacé par QtWebengine , que tout est pas public et tout ca.

    j ai essayé de l inclure de toutes les facons mais ma science des .pro etant fort limitée j ai du supporter ce fichier qtWebengine qui me regardait dans les yeux en persiflant :"tatata tu m auras pas t es trop béta "et moi de rester devant comme un naufrager sans ouvre boite devant une conserve de haricot.

    j ai pris mon rateau je suis sorti du bac a sable et j ai parcouru les landes sauvages des forums.

    Deja l exemple fourni marche pas. dautre s en sont étonné et on pourrait remplir un livre avec tout ce que ca a suscité de commentaire.

    BREF.

    J ai ravalé mes ambitions et je les ai révisé a la baisse: genre comprendre ce que ca dit sur les forums.

    Dans mes errances j ai glané deux trois mots que j entends depuis fort longtemps . genre makefile et . pro, et les .qmt je crois.

    déja les makefile sous window ca se fait?

    parceque en gros j ai cherché dans code block un fichier nommé makefile.. et j ai rien trouvé. en dehors de mes sources et mes headers j ai trouvé des .o

    En revanche le tuto que j ai trouvé qui parle de make file( qui a l air de dire que c est pour une ligne de commande sous invite de commande

    parlait explicitement d un fichier nommé makefile.

    Du coup c est code::block qui le fait en douce?

    et le .pro c est l equivalent d un makefile maison de qt?

    En gros l univers compileux m est totalement étrangé . la seule experience que j  en ai c est le lien que gbdivers a donné sur comment changer de compilateur sous code::block.

    Si vous avez des infos(notamment sur le makefile(que je sais pas si c est un truc qui se fait que sous linux ou quand ca se fait(visiblement pas tt le temps(deja il faut des dépendances).

    MERCI.

    en passant ce lien a été conseillé sur un forum et je le trouve tres bien (si d autres débutants cherche ce genre de choses) :http://www.network-theory.co.uk/docs/gccintro/gccintro_18.html

    -
    Edité par GouyFred 24 août 2018 à 22:10:50

    • Partager sur Facebook
    • Partager sur Twitter
      25 août 2018 à 4:58:55

      Hello,

      Pour bien comprendre cette histoire de makefile, .pro et autres fichiers utiles a la création d'un exécutable, il faut remonter un peu.

      La création d'un exécutable se fait (en C++ et en simplifiant un peu) en deux étapes :

      La première étape consiste a prendre ton code source (ici un fichier .cpp) et a le transformer en instructions que ton processeurs pourra comprendre (tes fichiers objets ou .o). Une fois que que tu as tes fichiers objets, l’édition des liens consiste a les lier (je simplifie un peu) ensemble pour créer ton exécutable.

      Bon on a revu les bases, mais on est toujours pas bien avance sur cette histoire de Makefile ^^. Il se trouve que tu peux compiler ton programme et le linker sans faire appel a aucun autre programme que ton compilateur et ton linker (gcc et ld pour les version GNU par exemple). C'est possible mais c'est long, fastidieux, et ça peut être source de pas mal d'oublis/erreur. En quelques mots : C'est très chiant.

      Du coup, on a cherche a créer des outils pour faire ça a notre place. C'est la qu'est arrive par exemple make. make étant un programme permettant de lire un Makefile exécutant la série d'instruction qui s'y trouve et décrivant ce qui doit être fait pour compiler ton programme. Du coup, plutôt que de retaper manuellement mon armée de commande (compilation/link) a chaque fois que je veux compiler mon code, je les inscrit une fois dans un Makefile et quand je veux compiler je n'ai plus qu'a appeler make.

      make (et donc les Makefile) est donc un outil nous permettant de simplifier nos étapes de compilation. Cependant, l’écriture d'un Makefile est longue, propre aux outils gnu*, et ça peut être source de pas mal d'oublis/erreur. En quelques mots : C'est chiant.

      note : make est un outil de la suite gnu. Il est donc présent sous Linux mais pas que. Si tu utilise Mingw sous windows, make est aussi présent. Ainsi, si tu utilise CodeBlocks avec mingw, il y a de bonnes chances (mais ce n'est pas certain pour autant qu'un Makefile soit utilise a un moment donne).

      C'est bien beau tout ça, mais on a quand même un truc chiant a utiliser. Et c'est pour cela qu'on a crée des outils pour générer nos Makefile (ou nos autres systèmes de build hors de écosystème gnu). Deux systèmes assez répandus sont cmake et qmake. Ces deux systèmes utilisent une syntaxe qui leur est propre (celle de ton .pro pour qmake) a partir de laquelle ils génèrent un système de build (un Makefile par exemple). Ce Makefile est alors utilise pour compiler ton projet.

      Cela permet de t'affranchir de pas mal de contraintes que nous avions précédemment :

      • la syntaxe est généralement moins tordue
      • On sort du gnu only (cmake par exemple permet de générer des Makefile, mais aussi des solution Visual Studio ou des projets codeblocks)

      En bref, c'est moins chiant :)

      Pour résumer : un .pro passe a qmake (ou un CMakelists.txt passe a cmake) sert a générer un système de build (un Makefile avec gcc ou mingw) qui décrit les étapes de compilation et d’édition des liens nécessaires pour générer ton exécutable. Souvent, les étapes intermédiaires sont effectuée sous le capot par ton IDE (mais tu pourrais très bien les faire toi même en ligne de commande si tu le voulais).

      En espérant avoir pu t'aider a un peu mieux comprendre la chaîne de compilation d'un programme et les différents outils utilises. Si tu as des questions n’hésite pas ^^

      • Partager sur Facebook
      • Partager sur Twitter
        25 août 2018 à 10:27:50

        Grand Merci c est tres clair :D.

        A tout hasard connaitrais tu un tuto ou un liens qui parle de comment réaliser un .pro?

        PS

        j ai surement ma réponse: a ce lien que je donne si ca intéresse d autres:

        http://doc.qt.io/archives/qt-4.8/qmake-tutorial.html

        -
        Edité par GouyFred 25 août 2018 à 12:33:37

        • Partager sur Facebook
        • Partager sur Twitter
          26 août 2018 à 9:16:06

          (@Elried explication très claire et pédagogique !)

          GouyFred a écrit:

          j ai pris mon rateau je suis sorti du bac a sable et j ai parcouru les landes sauvages des forums.

          Et en faisant cela, tu ne suis plus une courbe d'apprentissage pédagogique correcte, tu apprends des choses trop dures pour ton niveau et qui ont une faible utilité. C'est juste une perte de temps dans ton apprentissage.

          Si on dit qu'il n'est pas bon, ce n'est pas sans raison.

          • Partager sur Facebook
          • Partager sur Twitter
            26 août 2018 à 11:04:38

            J en tends bien mais en l abscence de possibilité de finir le cours Qt, il est difficil de faire plus avec le cours c++ que je n ai fait.( a moins de m inventer des projets ce que j ai fait , alors oui mon truc compile et marche mais j ai l absolu certitude qu il y a mille chose a faire dessus pour le rendre plus propre  plus lisible,mais  voila ca a l heure qu il est je peux pas le faire.

            En revanche, apprendre a me depatouiller pour comprendre comment marche un framework meme au niveau basic je pense c est util tt le temps.

            En gros un ancien collegue de fac m a suggéré au départ de ma formation qu il y avait moyen de trouver un taff dans sa boite moyennant une courte mise a niveau.

            Aujourd hui j ai un peu renoncé a cet objectif en voyant l ecart impossible a comblé entre les programmeurs qui vivent de ca comme vous ou koala ou joelink ou bacelard enfin ceux qui d une maniere generale réponde sur ce fofo.

            Mais dans les elements que mon collegue m avait glisser l une des vraies compétence utile avait l air d etre: la capacité a rentrer dans un framework avec une doc et a s en demerder le plus vite possible.

            Alors pour le plus vite possible.. c est rapé. j en suis a trois jours, j ai les fichiers sous le nez dans un repertoire impossible de les lier mais bon, savoir trouver son chemin ca a l air d etre une competence indispensable .

            Alors j essaie simplement.

            • Partager sur Facebook
            • Partager sur Twitter

            makefile

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown