关于Makefile的问题求解答

img

img


上面是给我的两个版本的Makefile,最后都是实现了将.c文件转化成为.o文件得到目标main
但是

img


上图这个一个指令我自己理解就已经把.c文件替换为.o文件了所以通过下图这个指令

img


得到了目标main
而第一张图中多了这个指令

img

我自己查阅了一下说是一种依赖的模式规则,我在想OBJS=$(patsubst %.c,%.o, $(SRCS))这个指令已经完成了.c到.o的转化
下面在来这样一个对应依赖规则是不是重复多余了。
下图我注释掉这个特殊的依赖规则后也能正常运行

img


这个特殊的依赖规则写在后面能起到作用吗?会不会什么已经完成转化而写在下面的这个依赖规则没有了

编译的源文件是不是只有一个??

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    对于这个问题,我可以给出以下解答:

    根据提供的信息和图片,版本1的Makefile中的特殊依赖规则确实存在重复多余的情况。因为你已经使用指令OBJS=$(patsubst %.c,%.o, $(SRCS))完成了将.c文件转换为.o文件的转换,并将生成的目标文件main与所有.o文件关联起来。因此,在这种情况下,特殊依赖规则的存在是多余的,而且不会起到任何作用。

    当你将特殊依赖规则注释掉后,程序仍然可以正常运行,这进一步证实了特殊依赖规则的冗余性。因为在这种情况下,由于已经完成了.c文件到.o文件的转换,特殊依赖规则将不起作用,因为已经没有任何.c文件需要转换。

    综上所述,特殊依赖规则是多余的,不会对程序产生任何影响。你可以将特殊依赖规则从Makefile中删除,而不会产生任何问题。

    如果还有其他问题,请随时告诉我。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^