Le mercredi 29 novembre 2017, de 18:30 à 21:30.
P.NO4.008
Organisateur : Herrgrim0

4 personnes sont intéressés

Moi aussi


Description

Make est un programme libre du système GNU permettant d'exécuter des recettes, comme compiler un programme, effectuer le rendu d'une image ou d'un site web ou encore d'un document pdf. En fait, il permet d'automatiser toutes les tâches de transformation de fichiers, même complexes (le noyau Linux est par exemple compilé avec make). Il est présent sur Linux bien sûr, mais aussi sur Mac OS X ou *BSD. Il y a aussi moyen de l'utiliser sur Windows à l'aide d'un émulateur de shell Linux comme CygWin.

Make existe depuis les années 80 et est l'outil de référence pour la compilation de programmes. La description des opérations à effectuer en texte, dans un fichier Makefile, permet de partager facilement les règles de compilation entre différents développeurs, éventuellement sur des systèmes d'exploitation différents; et permet aussi d'aisément suivre l'évolution du code et du processus de compilation.

Pourquoi l'utiliser ?

  • Tout d'abord, parce que c'est l'outil de compilation le plus répandu et le standard de facto.
  • Il est indépendant du compilateur ou de tout autre programme, ce qui permet une grande flexibilité d'utilisation
  • Il ne retraite que les fichiers qui ne sont plus à jour, ce qui accélère la recompilation d'un projet lorsqu'on en n'a changé qu'une petite partie
  • La description des règles en texte permet de garder une historique des versions dans Git, mais est lisible et utilisable par des humains ou d'autres programmes
  • On attend des étudiants en informatique qu'ils rendent leurs projets accompagnés d'un Makefile dès la deuxième année

Qu'allons-nous y faire ?

Au travers de plusieurs exemples, nous allons rédiger ensemble des Makefile. Par niveaux de difficultés incrémentaux, nous aurons l'occasion de faire un premier tour des fonctions de make et de leur usage.

  • Automatiser la mise à jour d'un site web statique

    • Règles, cibles, prérequis
    • Variables et variables spéciales
    • Générer des pages Web
    • Déploiement des fichiers sur un serveur
  • Compiler des programmes C/C++

    • Principes de la compilation en C/C++ (et autres langages ?)
    • Gestion des dépendances
    • Gestion des différents systèmes
    • Configuration de paquets externes
    • Fonctions
    • Gestion des dépendances avancées
  • Créer des documents PDF écrits en LaTeX

    • Principe de la compilation LaTeX
    • Ajouter une bibliographie
    • Générer des diagrammes avec Dia et Graphviz