使目标变量导致没有输入文件
问题描述:
我想在生成文件中使用以下内容,但是当我输入make filter_test
它给了我下面的错误,我不明白为什么。请注意输入文件应该在的空间。使目标变量导致没有输入文件
CXX=g++
CXXFLAGS=-O1 -pedantic -Wall -Werror -g
DEPS=p2.o recursive.o [email protected]
p2.o: p2.cpp ; $(CXXFLAGS) -c p2.cpp
recursive.o: recursive.cpp ; $(CXXFLAGS) -c recursive.cpp
filter_test: p2.o [email protected] recursive.o ; $(CXX) $(CXXFLAGS) recursive.o p2.o [email protected] -o aaa
输出:
g++ -O1 -pedantic -Wall -Werror -g -o .cpp
g++: fatal error: no input files
compilation terminated.
make: *** [.cpp] Error 4
答
[email protected]
只有配方内的值,所以当make
看到[email protected]
的先决条件列表,它把它作为一个空字符串。所以make正在尝试构建先决条件.cpp
并使用默认规则来构建它。要解决这个问题,请写:
filter_test: p2.o filter_test.cpp recursive.o
让配方留空,让我们使用默认规则。
谢谢,我不知道它只在配方中有效。当你说“让使用默认规则”时,默认规则是什么意思? –
如果不指定配方,'make'具有默认规则,用于使用具有.o,.c,.cpp以及任何其他许多后缀的相似命名文件构建可执行文件。该规则将使用诸如“$ CC”,“$ CCFLAGS”等变量 –