Makefile 使模式规则无法识别

Makefile 使模式规则无法识别,makefile,mingw,Makefile,Mingw,我目前正在编写一个makefile,它能够编译不同的目标(比如调试、开发、发布)。链接和编译规则如下所示: $(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"$(@:%.

我目前正在编写一个makefile,它能够编译不同的目标(比如调试、开发、发布)。链接和编译规则如下所示:

$(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 "$@" "$<"
但是模式规则不应该适用于Main.o吗


我使用了MinGW的GNU Make 3.82.90。

这里没有足够的信息说明它为什么不工作。如果您确定您有一个文件
src/Main.cpp
,那么make应该选择该规则。cpp文件是源文件还是生成的文件?如果它是生成的,那么真正的问题可能在下面,生成发生的地方。您可以尝试使用
make-d
查看make在做什么,以及为什么它不喜欢这个规则

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