0

メイクファイルで次を使用しようとしていますが、入力make filter_testすると以下のエラーが表示され、理由がわかりません。入力ファイルを配置するスペースに注意してください。

CXX=g++
CXXFLAGS=-O1 -pedantic -Wall -Werror -g
DEPS=p2.o recursive.o $@.cpp

p2.o: p2.cpp ; $(CXXFLAGS) -c p2.cpp

recursive.o: recursive.cpp ; $(CXXFLAGS) -c recursive.cpp

filter_test:  p2.o $@.cpp recursive.o ; $(CXX) $(CXXFLAGS) recursive.o p2.o $@.cpp  -o aaa

出力:

g++ -O1 -pedantic -Wall -Werror -g         -o .cpp
g++: fatal error: no input files
compilation terminated.
make: *** [.cpp] Error 4
4

1 に答える 1

1

$@はレシピ内にのみ値を持つため、make前提$@条件リストにある場合は空の文字列として扱います。そのため、make は前提条件を構築しよう.cppとし、デフォルトのルールを使用して構築します。これを修正するには、次のように記述します。

filter_test: p2.o filter_test.cpp recursive.o

レシピを空白のままにして、デフォルトのルールを使用させます。

于 2013-09-30T01:55:45.363 に答える