我的makefile有问题,哪些产品没有可执行文件,并在目录中保留所有.o。这是代码:
CXXFLAGS=-Wall
sources = tst_Robot.cpp Robot.cpp Position.cpp Plot.cpp Objet.cpp EtatRobot.cpp EtatFige.cpp EtatEnRoute.cpp EtatEnChargeFacePlot.cpp EtatEnCharge.cpp EtatAVideFacePlot.cpp EtatAVide.cpp
objets = $(sources:.cpp=.o)
%: %.o
$(LINK.cpp) -o $@ $^
robot : $(objets)
###
clean:
rm -f *~ *.o *.bak
depend:
makedepend $(sources)
我不明白的是,makedepend工作,没有错误,所有.o都被生成,但是程序本身并没有生成,即使有了规则: 机器人:$(objets)
所以我不明白为什么它不起作用,如果你能帮我搞清楚,我将不胜感激。
答案 0 :(得分:1)
模式规则始终用于文件对的一对一匹配,例如
%.o: %.cpp
您可能会认为模式规则只是为每对编写单独规则的快捷方式。 以上规则将匹配以下对:
source.o: source.cpp
other.o: other.cpp
...
您需要的是将规则如何制作robot
来制作机器人目标。
robot: $(objets)
$(LINK.cpp) -o $@ $^
您必须删除模式规则,因为它适用于几乎所有内容。 如果你打电话给make使用:
make robot
模式规则会尝试找到一个robot.o
文件,它将是构建机器人的输入。