2012-03-01 8 views
0
との変数置換エラー

変数の置換を試すまで、makeファイルが正常に機能しました。 %.oは認識されません。gccメイクファイル:%

私はmakeを取得します:* `パーサー 'が必要とするターゲット'%.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

答えて

0

ターゲット名に%が存在しないため、パターンルールを作成していません。その結果、%は依存関係のリストに特別な意味を持ちません。それはファイル名の文字どおりの部分と見なされます。通常のワイルドカードとして使用することはできません。