cc -MM 解决:如果makefile和源码不在同一个目录下,更新头文件却不能重建目标的问题

当makefile和源码不在同一目录时,cc -MM更新头文件无法触发目标重建。通过修改makefile,使用sed命令和$(notdir $*)、$(dir $*)来正确匹配和替换目标文件路径,从而确保.h文件改变时能正确重建目标文件。
摘要由CSDN通过智能技术生成
背景:
当前目录下有include ,src两个目录,include放头文件,src有四个源文件。写了如下makefile文件。可以生成目标。hello
问题:当我更新了头文件之后,重新make竟然提示我当前hello已经是最新的了。28行以后的东西难道没有起作用?28行-32行好多教程里面都是这么写的呀。包括gnu make中文手册,跟我写makefile.

09 OBJ_DIR=./src
 10 VPATH=src:include
 11 #vpath %.h include
 12 sources=$(wildcard $(OBJ_DIR)/*.c)
 13 objects=$(patsubst %.c,%.o,$(sources))
 14 #echo $(sources)
 15 hello : $(objects)
 16         @echo "$$ ^ >" $^
 17         @echo "$$ @ >" $@
 18         cc  $^ -o $@
 19 clean:
 20         -rm hello $(OBJ_DIR)/*.o
 21         -rm $(OBJ_DIR)/*.d*
 22 display:
 23         @echo "VPATH>>" $(VPATH)
 24         @echo "sources>>"$(sources)
 25       
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值