如何设置“ make install”以检查已安装的库/ bins的md5,并且仅在更改后才安装?

时间:2019-06-03 14:26:52

标签: gnu-make autoconf automake

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

我的问题是顶级构建+构建安装会生成几个静态和动态库以及二进制文件。到目前为止,一切都很好。问题在于,“ make install”会不加选择地复制这些库/ bin的每个库。 (这需要一段时间)

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

如何将其连接到configure.ac/Makefile.am中?

1 个答案:

答案 0 :(得分:1)

用于复制文件的实际程序为install(通常为/usr/bin/install);这是在INSTALL变量中定义的。

您的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接受了大量参数,如果要重新实现兼容的脚本,则可能必须实现其一些子集。