Makefile离开.o并且不生成可执行文件

时间:2015-11-15 16:50:35

标签: c++ makefile

我的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)

所以我不明白为什么它不起作用,如果你能帮我搞清楚,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

模式规则始终用于文件对的一对一匹配,例如

%.o: %.cpp

您可能会认为模式规则只是为每对编写单独规则的快捷方式。 以上规则将匹配以下对:

source.o: source.cpp
other.o: other.cpp
...

您需要的是将规则如何制作robot来制作机器人目标。

robot: $(objets)
       $(LINK.cpp) -o $@ $^

您必须删除模式规则,因为它适用于几乎所有内容。 如果你打电话给make使用:

make robot

模式规则会尝试找到一个robot.o文件,它将是构建机器人的输入。