L'outil Make - Introduction

Enseignement - LAL
  • Présentation
  • Fichier de configuration
  • Règles
  • Macros
  • Exemples
  • Quelques trucs

  • Présentation :

    make permet de gérer : d'un ensemble de fichiers interdépendants en testant leurs dates de dernières modifications respectives.

    Son utilisation se fait en deux étapes :

    1. dans un fichier généralement nommé Makefile ou makefile on décrit :
    2. après toute modification de l'un des fichiers source, il suffit de taper make;
      Alors make :

    Structure d'un fichier Makefile :

    Un fichier de configuration pour make peut contenir essentiellement 3 types de lignes : On appelle règle une dépendance et les lignes de commandes associées.

    Attention : il ne faut surtout pas considérer un fichier de configuration Makefile comme un programme.
    En particulier, il n'y a pas de "déroulement séquentiel", du début à la fin du fichier.

    Les règles :

    Elles sont donc composées :
    d'une règle de dépendances;
    celle-ci s'exprime par une liste non vide de cibles à reconstruire, séparées par des blancs,
    d'une règle de production;
    elle s'exprime par une tabulation, suivie de commandes du shell à exécuter pour mettre à jour la cible.
    Exemple :
    (les caractères d'une ligne suivant un # sont ignorés de make)
        # Prog.exe est généré à partir de fichiers objets
        prog.exe : prog.o test.o
              cc -o prog.exe prog.o test.o
        # ^^^ Cet espace doit être une TABulation;
        # la ligne précédente est une instruction 
        # pour linker les fichiers objects.
    
    Dans l'exemple ci-dessus, prog.exe est la cible; c'est sa date de dernière modification qui est comparée à celles des dépendances, prog.o et test.o. La règle de production, précédée d'une tabulation, est la commande de link cc -o prog.exe prog.o test.o.

    Il est possible de définir des règles sans dépendances; ce sont des règles dont les commandes sont toujours exécutées; exemple :

       # pour effacer des fichiers devenus inutiles ...
       clean :
           rm -f *.o core *~
    
    qu'on appliquera en tapant :
       unix> make clean
    

    Les macros :

    Il existe un certain nombre de macros prédéfinies et largement utilisées; voici les principales :

    Un exemple :

        LPR   = lpr -Ppegase
        FILES = preface chap1 chap2 chap3 appendix
        #
        print : $(FILES)
            $(LPR) $?
            touch print
        #
        printall :
            $(LPR) $(FILES)
    

    Quelques trucs :

    Point d'entrée make dans le manuel en ligne.
    Last modified: Mon Apr 14 11:37:48 CEST 2003 by LAL enseignement <ens@lal.in2p3.fr>