【问题标题】:Makefile: update a library more efficientlyMakefile:更有效地更新库
【发布时间】:2021-07-06 15:50:02
【问题描述】:

我构建 foo.a 库的规则是:

${LIB}: ${LIB_OBJ}
    ar ${LIB_ARGS} ${LIB} ${LIB_OBJ}
    ranlib ${LIB}

这就变成了:

 ar -cvrU lib/libfoo.a ... (all the obj/foo.o files)

它可以工作,但是随着我添加更多代码,这需要的时间越来越长。这是一个干净的构建所必需的,但是如果 libfoo.a 列出了,而我只更改了一个 foo.cpp 呢?

请注意,我只是手动完成的:

ar -cvrU lib/libfoo.a obj/foo.o

而且花了 10 或 15 秒,这似乎有点疯狂。

所以我猜我的问题是:我能更有效地做到这一点吗?

【问题讨论】:

  • 我正在考虑增量构建。例如,您可以看到这一点,但我不确定您是否已经进行了增量构建,因为您还没有发布整个代码:stackoverflow.com/questions/31082409/…

标签: c++ gnu-make


【解决方案1】:

是的。 Make 内置了对管理归档文件的支持。它可以打开存档并将存档中对象的时间戳与磁盘上的源文件进行比较,以决定是否重新制作对象,然后仅替换那个对象文件。

您可以在the GNU make manual 阅读有关此内容的信息。

【讨论】:

    猜你喜欢
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多