Changes between Initial Version and Version 1 of ToolsMakefile


Ignore:
Timestamp:
Dec 3, 2009, 11:30:18 AM (15 years ago)
Author:
cobell
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsMakefile

    v1 v1  
     1{{{
     2#!html
     3<h1> Annexe : Makefile </h1>
     4}}}
     5
     6[[PageOutline]]
     7
     8= Introduction =
     9
     10Le flot de conception proposé par la chaîne de CAO Alliance se décompose en plusieurs étapes.
     11Chaque étape est réalisée par un outil CAO, et les différents outils communiquent entre eux par des fichiers.
     12
     13Les dépendances de données entre les différentes étapes sont donc matérialisées par des dépendances entre fichiers.
     14L'outil '''make''' de UNIX permet de décrire ces dépendances, et
     15donc d'automatiser l'enchaînement des étapes de conception.
     16
     17Le fichier Makefile est un ''script'' décrivant les dépendances, dont l'exécution est lancée par la commande ''make''.
     18
     19= Principe de base : Les Règles =
     20
     21Un Makefile est un fichier contenant une ou plusieurs règles traduisant les dépendances entre les actions et les fichiers.
     22
     23Voici une règle type Makefile :
     24{{{
     25#Rq: chaque commande doit être précédée d’une tabulation
     26cible1 : dépendance1 dépendance2 ....
     27    commande_X
     28    commande_Y
     29}}}
     30
     31Les dépendances et cibles représentent, en général, des fichiers.
     32Seule la première régle  du Makefile est examinée.
     33Les règles suivantes sont ignorées si elles ne sont pas impliquées par la première.
     34Si certaines dépendances d'une règle X sont elles-mêmes des règles dans le Makefile alors ces dernières seront examinées avant la règle X appelante.
     35Pour chaque règle X examinée, si au moins une de ses dépendances est plus récente que sa cible alors les commandes de la règle X seront exécutées.
     36
     37Remarque : les commandes servent généralement à produire la cible (i.e un nouveau fichier).
     38Une cible peut ne pas représenter un fichier. Dans ce cas, les commandes de cette règle seront toujours exécutées.
     39
     40= Règles de modèles =
     41
     42Ces règles sont plus polyvalentes car vous pouvez spécifier des règles de dépendance plus complexes.
     43Une règle de modèle ressemble à une règle normale, sauf qu'un symbole (%) apparaît dans le nom de la cible.
     44Les dépendances emploient également (%) pour indiquer la relation entre les noms de dépendance et le nom de la cible.
     45La règle de modèle suivante spécifie comment tous les fichiers vst sont formés à partir des vbe.
     46{{{
     47#exemple de règle pour la synthèse
     48%.vst : %.vbe
     49    boog $*
     50}}}
     51
     52= Définitions de variables =
     53
     54On peut définir des variables en n'importe quel endroit du fichier Makefile, mais une écriture lisible nous amène à les définir en début de fichier.
     55
     56{{{
     57#définitions de variables
     58
     59MY_COPY = cp -r
     60MY_NUM = 42
     61MY_STRING = "hello"
     62
     63#Elles sont utilisables à n'importe quel endroit du Makefile. Elles doivent être précédées du caractère '''$'''
     64
     65#utilisation d’une variable dans une règle
     66
     67copie:
     68    ${MY_COPY} digicode.vbe tmp/
     69}}}
     70
     71
     72= Variables prédéfinies =
     73
     74 * '''$@''' Nom complet de la cible.
     75 * '''$*''' Nom du fichier cible sans l'extension.
     76 * '''$<''' Nom du premier fichier dépendant.
     77 * '''$+''' Noms de tous les fichiers dépendants avec des dépendances doubles répertoriées dans leur ordre d'apparition.
     78 * '''$!^''' Noms de tous les fichiers dépendants. Les doubles sont retirés.
     79 * '''$?''' Noms de tous les fichiers dépendants plus récents que la cible.
     80 * '''$%''' Nom de membre pour des cibles qui sont des archives (langage C).
     81   Si, par la cible est libDisp.a(image.o), $% est image.o et $@ est libDisp.a.