xirurensheng_123 2016-08-04 13:56 采纳率: 0%
浏览 1747
已采纳

关于Makefile编译时死循环问题

2 ifneq ($(EXE),"")
33 all:$(EXE)
34 endif
35
36 ifneq ($(LIBS),"")
37 all:$(LIBS)
38 endif
39
40 ifneq ($(MAKECMDGOALS),clean)
41 -include $(DEPS)
42 endif-
43 $(DIRS):
44 | $(MKDIR) $@
45
46 $(EXE):$(DIR_EXES) $(OBJS)
47 | $(CC) $(filter %.o, $^) -o $@
48 $(LIBS):$(DIR_LIBS) $(OBJS)
49 | $(AR) $(ARFLAGS) $@ $(filter %.o,$^)-
50 $(DIR_OBJS)/%.o:$(DIR_OBJS) %.c
51 | $(CC) -c $(filter %.c, $^) -o $@
52 $(DIR_DEPS)/%.d:$(DIR_DEPS) %.c
53 | @set -e;\
54 | echo "Making $@...";\
55 | $(RM) $(RMFLAGS) $@;\
56 | $(CC) -E -MM $(filter %.c, $^) > $@.tmp;\
57 | sed 's,(.*).o[ :],objs/\1.o $@ :,g' < $@.tmp > $@;\
58 | $(RM) $(RMFLAGS) $@.tmp;-
为什么进行头文件依赖的时候如果不在58行后边添加mv $@ $@的话其会一直循环执行 如果其模式匹配直接为%.d:%.c的话其执行没有问题

[root@localhost src]# make
mkdir deps
Making deps/foo.d...
Making deps/foo.d...
Making deps/foo.d...
Making deps/foo.d...
这位其执行结果

  • 写回答

1条回答 默认 最新

  • devmiao 2016-08-04 16:34
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?