无法识别模式规则

时间:2013-03-18 10:51:49

标签: makefile mingw

我目前正在编写一个能够编译不同目标的makefile(如Debug,Development,Release)。链接和编译规则如下所示:

$(DEVELOPMENT_OUT): $(subst rep,development,$(OBJS))
    g++ -o $(DEVELOPMENT_OUT) $(subst rep,development,$(OBJS))

obj/development/%.o: src/%.cpp
    g++ -c -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"

现在,我得到了这个输出:

make: *** No rule to make target 'obj/development/Main.o', needed by 'bin/Development.exe'.  Stop.

但是模式规则不应该适用于Main.o吗?

我使用MinGW的GNU Make 3.82.90

1 个答案:

答案 0 :(得分:1)

这里没有足够的信息说明为什么它不起作用。如果您确定自己有文件src/Main.cpp,那么make应该选择该规则。 cpp文件是源文件还是生成的文件?如果它生成了那么可能真正的问题是降低,生成发生的地方。您可以尝试使用make -d查看制作的内容以及不喜欢此规则的原因。