gcc Makefile: ошибка подстановки переменной с% - PullRequest
0 голосов
/ 01 марта 2012

Мой make-файл работал до тех пор, пока я не попытался заменить некоторые переменные. % .o не распознается.

Я получаю 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 $@ $^

#2 no problem
#parser: $(OBJ)
#  $(CC) $(CFLAGS) -o $@ $^

#3 this fails
parser: %.o
   $(CC) $(CFLAGS) -o $@ $^

#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 Ответ

0 голосов
/ 01 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...