2025年4月3日 星期四 乙巳(蛇)年 正月初四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Makefile

解决修改源文件或头文件后,make 不进行重新编译的问题

时间:11-22来源:作者:点击数:20

文件清单:

  • $ tree
  • .
  • ├── Makefile
  • ├── shmdata.h
  • ├── shmread
  • └── shmread.c

Makefile 内容:

  • shmread:
  • gcc shmread.c shmdata.h -o shmread
  • .PHONY:clean
  • clean:
  • rm shmread

执行 make:

  • $ make
  • make: “shmread”已是最新。

奇怪了,刚刚明明修改过 shmread.c,为什么 make 报 shmread 已是最新的。

冥冥之中,感觉像下面这样修改可能有用

  • shmread:shmread.c
  • gcc shmread.c shmdata.h -o shmread
  • .PHONY:clean
  • clean:
  • rm shmread

make 一下

  • $ make
  • gcc shmread.c shmdata.h -o shmread

果然可以

思考下原因,之前那种写法没有指明依赖关系,所以 make 不知道 shmread 依赖 shmread.c,自然就不会比较 shmread.c 和 shmread 这两个文件的修改时间,进而判断是否要重新编译。所以我们这里要手动指明“目标”的“依赖”,这样,依赖修改了,目标就会被重新编译。

同理,头文件一样,也要加在依赖中:

  • shmread:shmread.c shmdata.h
  • gcc shmread.c shmdata.h -o shmread
  • .PHONY:clean
  • clean:
  • rm shmread

make 一下

  • $ make
  • gcc shmread.c shmdata.h -o shmread

奏效

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐