怎么写makefile才能节省编译时间

发布于 2022-09-30 07:32:42 字数 614 浏览 11 评论 0

我的一个主目录dir0下有十个子目录dir1,dir2,dir3,...dir10
每个子目录下都有c程序和各自的makefile文件,各个子目录中的程序之间没有关系
主目录下的有一个makefile,如下:
all:
      cd  dir1; make
      cd  dir2;make
      cd  dir3;make
         ...
      cd  dir10;make

现在我只修改了几个子目录中的程序, 但在主目录下运行make,  makefile就会从dir1开始逐个检查,
直到所有子目录下文件都被检查一遍.

要问的就是怎么写makefile能让它只检查并更新我修改的那些程序?

[ 本帖最后由 thestones 于 2005-12-5 22:08 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

皓月长歌 2022-10-07 07:32:42

是不是可以这样, 先在主目录下运行 make -n -q  , 打印出真正执行更新的命令, 然后写个脚本或者什么的执行
这些命令就行了

淡淡绿茶香 2022-10-07 07:32:42

automake

回忆躺在深渊里 2022-10-07 07:32:42

10个子目录是相互独立的,怎么用automake在主目录下生成一个Makefile, 这个Makefile能够编译所有子目录里面的文件?
我今天试了一下automake,只能为每个子目录单独生成一个Makefile...    还要加强学习呀

陪我终i 2022-10-07 07:32:42

可以参考Linux源文件中的Makefile

源来凯始玺欢你 2022-10-07 07:32:42

原帖由 thestones 于 2005-12-6 15:24 发表
10个子目录是相互独立的,怎么用automake在主目录下生成一个Makefile, 这个Makefile能够编译所有子目录里面的文件?
我今天试了一下automake,只能为每个子目录单独生成一个Makefile...    还要加强学习呀

Anjuta是一个集成开发环境,如果你使用它的话会省下来一些写makefile的时间

但是安装比较复杂

http://bbs.chinaunix.net/viewthr ... &extra=page%3D4

内心荒芜 2022-10-07 07:32:42

除非你手工指定那些目录需要重新编译,make不可能知道到底有哪些文件被修改了。唯一的方法就是检查所有文件。所以如果你希望只是编译修改过的目录,应该到分别对应的目录里,执行make,而不是在上层目录执行make.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文