我有一个Makefile,其中包含一对如下规则:
file.c: filesvn
filesvn: .svn/entries
action1
action2
Run Code Online (Sandbox Code Playgroud)
在svn存储库中,这当然可以正常工作.该文件依赖于生活在subversion存储库中.从存储库导出时,这不起作用(没有规则来制作目标...),我想解决这个问题.我试图简单地将以前生成的filesvnout 版本带到导出的目录中,但Make仍坚持验证其filesvn依赖性.
当然,简单地删除.svn/entries的依赖关系确实有效,但是由于观察修订更新是目标,因此规则的精神被打破了.
有没有办法让Make不在乎.svn/entries文件不存在?
这种技术的优点并不是问题的一部分.我无法从根本上改变这一点,但如果有一种改变可以保持可能有效的精神.答案"你不能"当然是完全有效的.:)
slo*_*dog 26
您可以使用该wildcard函数忽略该文件,除非它存在:
filesvn: $(wildcard .svn/entries)
Run Code Online (Sandbox Code Playgroud)
另外:Subversion 1.7更改了本地工作副本的格式,因此即使在工作副本中,此规则也会停止工作.