我如何设置 'make install' 来检查已安装的 libs/bins 的 md5,并且只有在更改时才安装?

How do i set up 'make install' to check the md5 of the installed libs/bins and only installed if changed?

我继承了一个使用 autoconfigure/automake 构建的相当大的项目(configure.ac/Makefile.am 文件有其自身的问题,但这是一个单独的问题)。

我的问题是顶级构建 + 构建安装会生成多个静态和动态库以及二进制文件。到目前为止,一切都很好。问题是 'make install' 会不加区别地复制每一个 libs/bins。 (这需要一段时间)

我希望它只复制已更改的 libs/bins - 可能通过比较目标文件和源文件的 md5sum。

如何在我的配置中连接它。ac/Makefile.am?

实际复制文件的程序是install(通常是/usr/bin/install);这是在 INSTALL Make-variable.

中定义的

您的 install 实现可能支持 -C 标志:

   -C, --compare
          compare each pair of source and destination files, 
          and in some cases, do not modify the destination at all

你可能不得不 因此,您可以尝试通过覆盖此变量来提供一个脚本来执行您想要的操作(将源文件与目标文件进行比较,并且仅在需要时进行复制)。 你也可以只注入 -C 标志,看看它是否给你任何加速(我倾向于同意 ldav1s 的评论,它可能不会):

make install INSTALL="/usr/bin/install -C"

请注意,install 接受相当多的参数,如果您要 re-implement 一个兼容的脚本,您可能必须实施其中的一些 sub-set。