2012-03-01 40 views
0

我的make文件已经工作,直到我尝试了一些变量替换。 %.o无法识别。gcc Makefile:变量替换错误%

我得到了:*没有规则来制作'parser'所需的目标`%.o'。停止。

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 2012-03-01 12:34:57

回答

0

由于目标名称中没有%,因此您未创建模式规则。因此,%在依赖关系列表中没有特别的含义。它被看作文件名的文字部分;你不能将它用作常规通配符。