C'est quoi un makefile ?

naskaanaskaa Membre
18:30 modifié dans Actualités #1
salut,
tout est dans le titre !

merci

Réponses

  • Philippe49Philippe49 Membre
    avril 2010 modifié #2
    Quand on exécute depuis le terminal la commande make , elle cherche dans le répertoire courant un fichier nommé makefile qui contient  l'ensemble d'actions que doit exécuter cette commande make ( compilation d'un projet, l'archivage de document, ... )  L'intérêt est de ne pas recompiler ce qui a déjà  été compilé si certains fichiers sources n'ont pas été transformés. Tu trouveras sur Internet de multiples sites d'exemples et d'explications.

    Mais si tu utilises XCode, le makefile est inutile,  XCode do it for you ! 
  • tabliertablier Membre
    18:30 modifié #3
    L'explication (in french) est là : http://gl.developpez.com/tutoriel/outil/makefile/
  • naskaanaskaa Membre
    avril 2010 modifié #4
    re,
    C'est pour eclipse (c++) et non Xcode :P
    make ---> ca compile le makefile ? la sous eclipse je ne vois pas ou je pourrais faire un make (dans la console peut être) ou alors c'est quand je run que ca le fait automatiquement ?
    (ca marche la, c'est juste je veux comprendre ce qui se passe !!! ) :D un curieux voila tout

    s.v.p. une autre question :

    Quand je compile ca sort des fichiers en assembleur ou langage machine mais je comprends pas la suite, pour arriver avec un .exe. C'est quoi les étapes. Genre quand on build ca fait quoi et quand on run ca fait quoi avec un Ide comme eclipse ou visual studio ou meme Xcode ?

    merci

    p.s. je suis en pleins examens ( C'est pour ca j'ai pas le temps de vérifier par moi même sur google)
  • zoczoc Membre
    18:30 modifié #5
    Je lis "étudiant en ingénierie logiciel"... Mais vous n'apprenez pas tout ça justement ?  ???


    Parce que bon, les phases de production d'un logiciel exécutable (compilation, édition de lien) et les outils qui permettent d'y arriver (Makefiles, etc...), ça me semble être vraiement la base de la base que doit connaitre tout ingénieur logiciel, non ?

  • tabliertablier Membre
    avril 2010 modifié #6
      ??? c'est quoi "eclipse" ?  ça marche sur quelle plate-forme?
    Bon, je vais aller faire un tour sur le www.......


    J'ai trouvé. Je n'ai jamais fait de Java (Comment java?). Mais pourquoi utiliser eclipse plus-tôt qu'Xcode?
  • aranaudaranaud Membre
    18:30 modifié #7
    dans 1271518328:

    L'explication (in french) est là : http://gl.developpez.com/tutoriel/outil/makefile/

    Merci pour le lien mais sa fait bizarre que un futur ingénierie en développement logiciel ne sache pas sa. Surement car une partie est caché grâce au logiciel de développement avancer comme Xcode.
  • zoczoc Membre
    18:30 modifié #8
    Eclipse à  l'avantage d'être multiplateformes, et c'est franchement un très bon outil de développement Java (bien meilleur et complet que XCode en tout cas).


    Je l'utilise parfois au boulot. On développe un système de collecte et rediffusion de données financières (cotations boursières entre autre) en temps réel, en C/C++ coté serveur (qui tourne sous AIX, Linux ou Windows), et nous fournissons à  nos clients (des banques) des API dans différents langages: C++, C# et aussi Java (et c'est pourquoi j'utilise Eclipse).
  • zoczoc Membre
    18:30 modifié #9
    dans 1272184340:

    Merci pour le lien mais sa fait bizarre que un futur ingénierie en développement logiciel ne sache pas sa. Surement car une partie est caché grâce au logiciel de développement avancer comme Xcode.

    Franchement, si ces bases ne sont plus abordées dans les écoles d'ingénieur, on tombe bien bas... J'espère qu'ils font au moins encore un peu d'assembleur, histoire de savoir comment ça marche un processeur...

  • aranaudaranaud Membre
    18:30 modifié #10
    dans 1272184531:

    dans 1272184340:

    Merci pour le lien mais sa fait bizarre que un futur ingénierie en développement logiciel ne sache pas sa. Surement car une partie est caché grâce au logiciel de développement avancer comme Xcode.

    Franchement, si ces bases ne sont plus abordées dans les écoles d'ingénieur, on tombe bien bas... J'espère qu'ils font au moins encore un peu d'assembleur, histoire de savoir comment ça marche un processeur...

    Je n'ai pas fait du tout d'école pour devenir développer mais dans un autre domaine, je peux te dire que les bases sont souvent survoler pour se concentrer sur des théories à  appliquer bêtement. Que les contrôles (ou évaluation) se contente d'évaluer justement l'application bête de ces théories.

    Bon après c'est juste mon expérience personnel et j'espère que ce n'est pas une généralité. Surtout dans des domaines où justement, il faut encourager la créativité et la curiosité.
  • zoczoc Membre
    avril 2010 modifié #11
    En ce qui me concerne, j'ai un DUT en informatique et un diplôme d'ingénieur Système et Réseaux (donc même pas génie logiciel en théorie), et pourtant on a bien vu tout ça, et même plus, vu qu'on a fait de l'architecture matérielle (fonctionnement d'un processeur et tout ce qui l'accompagne au niveau électronique: bus, interruptions matérielles, contrôleurs mémoire et périphériques, etc...). On a même développé en assembleur une pile réseau simple pour un réseau en anneau, le tout basé sur des cartes électroniques que nous devions concevoir nous même. Et, je le répète, c'est un diplôme d'administrateur système & réseau...




    Maintenant, je ne suis pas plus étonné que cela, je connais des "jeunes" administrateur réseau qui ne savent même pas à  quoi servent les Adresses Mac des cartes Ethernet... Vu qu'ils ont été formés sur IP sans jamais s'intéresser à  ce qu'il y avait au niveau physique.

  • aranaudaranaud Membre
    18:30 modifié #12
    C'est bien dommage de ne pas s'intéresser au physique. Tien sa me rappel une personne de l'informatique à  mon travaille,

    Un PC n'a plus de réseau, on appel le soutient informatique pour venir voir ce qui ce passe.
    Bon après les questions bêtes du type avec vous démarrer l'ordinateur. Il se déplace.
    Après avoir passer une demi journée sur le PC avec des programmes les plus varier et divers en dos et compagnie. Et sa sans rien trouver.
    On lui a suggéré de changer la carte réseau et oh miracle sa fonctionne de nouveau.
    C'était pourtant marqué dans windows (pas de réseau) mais bon, la carte avait des leds qui clignotait comme si elle fonctionnait correctement. Même le switch ni voyant que du feu.

    Sa nous à  fait bien rire (moi et mes collèges), de l'avoir vu passer presque une journée à  faire une recherche de panne alors qui suffisait de changer la carte réseau pour 10€.
  • tabliertablier Membre
    18:30 modifié #13
    En fait, en école la spécialisation élimine beaucoup de chose connexes au sujet principale! Après l'école vient l'expérience! Moi qui suis électronicien pur et dur, j'ai fini par apprendre pas mal de choses en informatique (même si la POO me pose toujours des problèmes)!
    Le difficulté est donc pour les étudiants de se rendre compte que les sciences et techniques sont des sujets trop larges pour les connaà®tre complètement et qu'ils devront apprendre durant toute leur vie, dans leur métier et à  coté de leur métier!

    Pour Zoc,
    fonctionnement d'un processeur et tout ce qui l'accompagne au niveau électronique: bus, interruptions matérielles, contrôleurs mémoire et périphériques, etc..
    ça c'était ma partie, en principe.
  • zoczoc Membre
    18:30 modifié #14
    dans 1272187473:

    Pour Zoc,
    fonctionnement d'un processeur et tout ce qui l'accompagne au niveau électronique: bus, interruptions matérielles, contrôleurs mémoire et périphériques, etc..
    ça c'était ma partie, en principe.

    J'avais compris déjà  d'après tes différents messages sur le forum.


    Ce que je voulais dire, c'est que même si le lien avec ma formation n'était pas évident, et même si on n'est bien sûr pas allé aussi loin qu'un ingénieur en électronique numérique, on a quand même mis le "nez dedans" pour avoir les bases.
  • tabliertablier Membre
    avril 2010 modifié #15
    .... en électronique numérique, on a quand même mis le "nez dedans" pour avoir les bases.
    Tu prêches un convaincu! mais c'est un raisonnement qui s'applique de moins en moins! d'ou la discussion générale dans tout les systèmes d'apprentissage: doit-on faire des gens à  la culture large qui se spécialisent ou des spécialistes sans culture générale qui retourneront à  l'école quand leur spécialité sera inutile?
  • kettchkettch Membre
    18:30 modifié #16
    dans 1272184531:

    Franchement, si ces bases ne sont plus abordées dans les écoles d'ingénieur, on tombe bien bas... J'espère qu'ils font au moins encore un peu d'assembleur, histoire de savoir comment ça marche un processeur...


    C'est malheureux à  dire, mais même l'assembleur, on en voit de moins en moins... Maintenant ils font du C# et la plupart s'en contentent... Récemment, je suis resté bouche-bée quand un jeune diplômé m'a dit qu'il n'avait jamais eu de cours d'architecture processeur, et clairement pas vu d'assembleur de sa vie.

    Je suis sorti d'école il y a à  peine 5 ans, et pourtant j'ai fait de l'assembleur, de l'architecture, et tout plein d'autres trucs rigolos. Beaucoup trouvaient ça insupportable à  l'époque, mais pourtant, ça me sert aujourd'hui.
  • naskaanaskaa Membre
    mai 2010 modifié #17
    Je repose la question car toujours pas de réponse
    J'y réponds en même temps car j'ai du temps pour chercher moi-même now :


    Remarque : Relire le poste pour mieux comprendre car la question à  la base a déjà  été résolue (sur le makefile).
    edit: Aligator vient d'ajouter une autre reponse sur le makefile juste apres :P MERCI

    Question:
    Quand je compile ca sort des fichiers en assembleur ou langage machine mais je comprends pas la suite, pour arriver avec un .exe. C'est quoi les étapes. Genre quand on build ca fait quoi et quand on run ca fait quoi avec un Ide comme eclipse ou visual studio ou meme Xcode ?
  • AliGatorAliGator Membre, Modérateur
    18:30 modifié #18
    dans 1273323880:
    make ---> ca compile le makefile ?
    Non (ou du moins "compiler" n'est pas le bon terme). Make exécute les actions décrites dans le Makefile, actions qui sont des commandes terminal, et dont l'exécution (de chacune de ces actions/cibles) est conditionnée par les règles décrites dans le Makefile

    dans 1273323880:
    la sous eclipse je ne vois pas ou je pourrais faire un make (dans la console peut être)
    La console n'a pour but que d'afficher des informations (ne pas confondre console et terminal, par exemple).


    Pour le reste, c'est un processus en plusieurs étapes que tu verras certainement lors de tes cours en génie logiciel.


    PS : J'ai trouvé cette page par une petite recherche Google, ça devrait déjà  t'aider à  débroussailler le terrain sur la compréhension globale du processus de transformation d'un code source en exécutable. Sinon, bah soit patient et attend d'avoir les cours à  ton école :P
  • naskaanaskaa Membre
    mai 2010 modifié #19
    merci pour ta réponse sur le makefile !
    RECU 5/5 pour Console/Terminal !
    En faite, le cours a déjà  été fait il y a deux ans. C'est juste de la révision.
  • AliGatorAliGator Membre, Modérateur
    18:30 modifié #20
    Ouch. Et t'avais séché, ou dormi ?  :D :o
  • naskaanaskaa Membre
    mai 2010 modifié #21
    B) En faite, je ne portais de l'interet qu'au code

    Je comprends les étapes mais pas l'application dans un IDE au fond est obscure.

    difference entre builder et compilator ?
  • zoczoc Membre
    mai 2010 modifié #22
    dans 1273327981:

    B) En faite, je ne portais de l'interet qu'au code

    C'est dommage, surtout pour un futur ingénieur logiciel...


    Parce que dans un projet complexe (des dizaines de librairies, exécutables, etc...), maitriser le processus de génération des divers composants peut faire gagner des heures lors de la compilation du projet entier. A titre d'exemple, le projet sur lequel je bosse est composé de 6 librairies et 8 exécutables. Certaines de ces librairies contiennent de code autogénéré (on parse un fichier XML et on produit du C++, qui est ensuite compilé). En optimisant le processus de build, on est passé de 35 minutes de compilation à  20 minutes...


    PS: Sous Eclipse, il y a aussi un système évolué du même style que les Makefile, pour les projets complexes. Mais au lieu d'utiliser "make", Eclipse utilise "ant", qui se base sur un fichier de commande XML. Mais sur le principe, c'est la même chose. Là  également on l'utilise pour produire l'API Java de notre produit: On parse un fichier XML (le même que précédemment), qui produit des classes Java, qui sont ensuite compilées. Ensuite le tout passe par un obfuscateur. C'est possible de faire chaque étape manuellement, mais en l'occurrence décrire ces tâches dans un fichier XML et les faire exécuter par ant est bien plus simple et automatique !


    Le boulot d'un ingénieur logiciel, ce n'est généralement pas de pondre du code au kilomètre [1] (c'est réservé aux "développeurs", généralement bac+2). Le rôle de l'ingénieur logiciel, c'est d'être chef de projet, donc de penser à  l'architecture du logiciel, et également à  l'architecture des outils qui vont permettre d'être efficace. Parce que passer de 30 minutes à  15 minutes pour chaque compilation, quand on en fait plusieurs par jour, ça fait gagner beaucoup de temps (et d'argent du coup).

    [1]: Sauf dans les petites boites, comme moi, où l'ingénieur logiciel est à  la fois chef de projet, architecte, développeur, testeur, et accessoirement ingénieur réseau  :D
  • naskaanaskaa Membre
    mai 2010 modifié #23
    je comprends les étapes maintenant.
    C'est juste que je ne comprends pas dans l'IDE Eclipse comment faire une compilation tout court. Est-ce le RUN qui compile et qui execute en meme temps. Et ya l'option build que je ne comprends pas.
    Merci aligator pour le lien super pratique ;)
    voici un autre super aussi http://www.commentcamarche.net/faq/14440-la-compilation-et-les-modules-en-c-et-en-c#2-la-compilation
    p.s. C'est parce que je suis futur ingénieur que je veux comprendre ca  o:)
  • zoczoc Membre
    18:30 modifié #24
    En général Build = Compilation + Edition de liens.


    En java il n'y a pas de phase d'édition de liens (les liens sont établis dynamiquement par la JVM lors de l'exécution). Donc dans le cas spécifique d'Eclipse Build = Compilation.
  • naskaanaskaa Membre
    18:30 modifié #25
    AaaaaH d'accord !  o:)
    voila la pièce du puzzle qui me manquait
    merci à  tous
Connectez-vous ou Inscrivez-vous pour répondre.