Aller au contenu

« Make » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Jérôme (discuter | contributions)
m Note: Le site de GNU Make n'est pas officiel car cette implémentation n'est pas officielle.
Jérôme (discuter | contributions)
casse, intro
Ligne 3 : Ligne 3 :
[[Catégorie:GNU]]
[[Catégorie:GNU]]


'''Make''' est un [[logiciel]] permettant de faire certaines choses en fonction de certaines autres. Le but est d'arriver à un résultat (logiciel compilé ou installé, documentation créée, ...) sans nécéssairement refaire toutes les étapes.
'''make''' est un [[logiciel]] traditionnel de [[UNIX]]. Il sert a appeller des commandes créant des fichiers. À la différence d'un simple script shell, make n'execute les commandes seulement si celà est necessaire. Le but est d'arriver à un résultat (logiciel compilé ou installé, documentation créée, ...) sans nécéssairement refaire toutes les étapes.


Il sert principalement à faciliter la [[compilation]] et l'[[édition de liens]] puisque dans ce processus le résultat final dépend d'opérations précédentes.
Il sert principalement à faciliter la [[compilation]] et l'[[édition de liens]] puisque dans ce processus le résultat final dépend d'opérations précédentes.


Pour ce faire, Make utilise un fichier de configuration appelé un [[makefile]]. Ce dernier décrit des ''cibles'' (qui sont souvent des fichiers, mais pas toujours), de quelles autres ''cibles'' elles dépendent, et comment y parvenir.
Pour ce faire, Make utilise un fichier de configuration appelé un ''makefile'' qui porte souvent le nom de '''Makefile'''. Ce dernier décrit des ''cibles'' (qui sont souvent des fichiers, mais pas toujours), de quelles autres ''cibles'' elles dépendent, et comment y parvenir.


== Histoire ==
== Histoire ==

Version du 26 septembre 2005 à 12:07


make est un logiciel traditionnel de UNIX. Il sert a appeller des commandes créant des fichiers. À la différence d'un simple script shell, make n'execute les commandes seulement si celà est necessaire. Le but est d'arriver à un résultat (logiciel compilé ou installé, documentation créée, ...) sans nécéssairement refaire toutes les étapes.

Il sert principalement à faciliter la compilation et l'édition de liens puisque dans ce processus le résultat final dépend d'opérations précédentes.

Pour ce faire, Make utilise un fichier de configuration appelé un makefile qui porte souvent le nom de Makefile. Ce dernier décrit des cibles (qui sont souvent des fichiers, mais pas toujours), de quelles autres cibles elles dépendent, et comment y parvenir.

Histoire

Make fut à l'origine développé par le docteur Stuart I. Feldman, en 1977. Ce dernier travaillait pour Bell Labs à cette époque.

Depuis, plusieurs dérivés ont été développés, les plus connus et utilisés sont ceux de BSD et de GNU.

Exemple de makefile

Voici un exemple de makefile :

 # Specify compiler
 CC      ?= gcc

 # Specify compiler options
 CFLAGS  ?= -g 
 LDFLAGS ?= -L/usr/openwin/lib
 LDLIBS  ?= -lX11 -lXext

 # Needed to recognize .c as a file suffix
 .SUFFIXES: $(SUFFIXES) .

 # Executable name
 PROG  = life 

 # List of object file needed for the final program
 OBJS  = main.o window.o Board.o Life.o BoundedBoard.o
 
 all: $(PROG)

 # Program compilation and linking steps
 $(PROG): $(OBJS)
      $(CC) $(CFLAGS) $(LDFLAGS) $(LDLIBS) -o $(PROG) $(OBJS)

 .cpp.o:
      $(CC) $(CFLAGS) -c $*.c

Dans cet exemple: .ccp.o est une cible. Par défaut les cibles sont des fichiers, et c'est le cas ici. Cette cible ne dépend d'aucune autre puisqu'il n'y a rien d'autre sur la même ligne après :.

Pour parvenir à cette cible, il faut exécuter la commande $(CC) $(CFLAGS) -c $*.c

all est une autre cible qui dépend de ${PROG} (et donc de life, qui est un fichier)

$(PROG) est une cible qui dépend de $(OBJ) (et donc de main.o window.o Board.o Life.o et BoundedBoard.o). Pour y parvenir, il faut exécuter la commande $(CC) $(CFLAGS) $(LDFLAGS) $(LDLIBS) -o $(PROG) $(OBJS)

Alternatives

  • makepp est dérivé de (GNU) make, mais offre en plus un analyseur extensible de commandes et fichiers inclus afin de reconnaître automatiquement les dépendances. Les options de commandes changés et autres influences sont reconnus. Le grand problème de make recursif peut être facilement évité, pour garantir une construction correcte. En plus Perl est accessible à tous les niveaux. http://makepp.sf.net

Liens externes

Modèle:Logiciels libres