2009-11-16 3 views
3

Je veux simplement taper « faire tout » et ont le Makefile suivant faire tout ce qu'il est censé faire:Comment ajouter une règle à ce Makefile?

LEX = lex 
YACC = yacc 
CC = gcc 

calcu: y.tab.o lex.yy.o 
    $(CC) -o calcu y.tab.o lex.yy.o -ly -lfl 

y.tab.c y.tab.h: parser.y 
    $(YACC) -d parser.y 

y.tab.o: y.tab.c parser.h 
    $(CC) -c y.tab.c 

lex.yy.o: y.tab.h lex.yy.c 
    $(CC) -c lex.yy.c 

lex.yy.c: calclexer.l parser.h 
    $(LEX) calclexer.l 

clean: 
    rm *.o 
    rm *.c 
    rm calcu 
+1

Je l'ai vu venir :) –

+0

Veuillez spécifier "make" au lieu de "makefile". Plus d'infos: http://meta.stackexchange.com/questions/24030/why-do-they-specify-makefile-tag-instead-of-make/26567#26567 –

Répondre

4

Ce que tout est-il censé faire? Si vous voulez juste construire calcu, tout ce que vous avez à faire est de taper make et il le fera avec tout ce dont il a besoin, parce que c'est la première règle dans le fichier.

Si vous voulez toujours faire une règle all, cela peut être fait comme ceci. Je recommande de mettre ceci au-dessus de toutes les autres règles, de sorte que vous pouvez simplement taper make au lieu de make all.

all: calcu 
+2

.PHONY: tous Cela dit faire que vous ne vous attendez pas à ce qu'il y ait un fichier nommé "all" après la construction. –

Questions connexes