2012-03-01 2 views
0

Мой файл make сработал, пока я не попытался заменить переменную. % .o не распознается.gcc Makefile: переменная Ошибка замещения с%

Я получаю make: * Нет правила для создания цели `% .o ', необходимой для` parser'. Стоп.

CC=gcc 
CFLAGS=-ansi -pedantic -Wall -ggdb3 
PROJECT=project.c project.h 
PARSER=parser.c parser.h 
OBJ=project.o parser.o 
#CFILE=project.c parser.c 

#1 no problem 
#parser: project.o parser.o 
# $(CC) $(CFLAGS) -o [email protected] $^ 

#2 no problem 
#parser: $(OBJ) 
# $(CC) $(CFLAGS) -o [email protected] $^ 

#3 this fails 
parser: %.o 
    $(CC) $(CFLAGS) -o [email protected] $^ 

#parser: project.o parser.o 
# gcc -ansi -pedantic -Wall -ggdb -o parser project.o parser.o 

project.o: $(PROJECT) 
    $(CC) $(CFLAGS) -c $^ 

parser.o: $(PARSER) 
    $(CC) $(CFLAGS) -c $^ 

clean: 
    rm -f $(OBJ) parser 
+1

Вы имели в виду * вместо%? – Flexo

ответ

0

Вы не создаете правило шаблона, так как не существует в целевом имени не %. В результате % не имеет особого значения в списке зависимостей. Это рассматривается как буквальная часть имени файла; вы не можете использовать его в качестве обычного шаблона.

Смежные вопросы