我的项目使用来自外部供应商的静态库libext.a
。
该库保存在所有项目开发人员central/
之间共享的中心位置,并且随着库的每个更新版本,添加了具有当前版本后缀的新文件:central/libext.a.1
,{ {1}},central/libext.a.2
,...
项目的Subversion存储库包含一个符号链接central/libext.a.3
,指向libext.a
中库的最新版本。每当添加新版本时,链接都会更改并提交到存储库。
问题是,在更改链接并更新工作副本后重新编译项目时,central
会查看链接目标的修改时间,而不是链接本身的修改时间({{ 1}})。因此,在编译项目中使用的库仍然是旧版本。
我知道自版本3.81以来 GNU Make 中可用的make
/ libext.a
标志,这使得-L
查看两者的修改时间链接的目标和链接本身,但我的项目使用版本3.80,并且升级将非常困难,因为必须在许多不同的机器上支持编译,其中一些我无法控制。
在我的旧版--check-symlink-times
中模拟此新旗帜行为的最简单方法是什么?
我更喜欢可以在特定Makefile中本地化并在其中实现的内容,而不是必须在运行make
之前运行的脚本或必须使用它指定的命令行选项,尽管这不是完全不可接受的
答案 0 :(得分:1)
也许您可以使用类似于here概述的技术,这是在文件校验和更改时让gmake重建的技巧,而不是简单地在时间戳更改时。
答案 1 :(得分:0)
到目前为止,我提出的最佳解决方案是在需要libext.a.timestamp
的Makefile中添加libext.a
作为要求,并将其添加为具有{{1的规则的先决条件作为先决条件。
另外,我添加了一条规则:
libext.a
现在我需要找到一种方法来在链接更新时触摸时间戳。不幸的是,我还没有办法做到这一点(SVN中没有更新后的钩子)......