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 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题