我正在尝试使用隐式规则使用GNU make编译一些C ++源代码,这是我的Makefile的内容:
%.o: %.cpp
g++ -o $@ $<
和make
make: *** No targets. Stop.
运行make -d
并不是很有帮助(我不会发布除了显然无用之外非常详细的输出)。该文件夹不为空。
答案 0 :(得分:4)
您告诉Make如何构建.o
个文件,但您没有告诉它:
.o
个文件; .o
个文件; .o
文件。规则并不意味着,在没有参数的情况下调用时,将编译当前目录中的所有.cpp
个文件或其他文件。
这一条规则还不够。
答案 1 :(得分:1)
您告诉make
如何从相应的.o
文件创建任意.cpp
个文件,但您没有告诉它要创建哪些文件。
要解决您的问题,您可以通过调用make
向make asdf.o
说创建(例如)“asdf.o”,并且很乐意这样做,使用{{1} }。
您还可以添加(事实上的标准)g++ -o asdf.o asdf.cpp
目标,如下所示:
all
由于第一个目标是默认目标,因此调用all: asdf.o fdsa.o [you get it]
相当于调用make
,后者又需要“asdf.o”和“fdsa.o”,它们将按照描述创建上方。