将makefile依赖项标记为可选或不重要

Nic*_*eys 16 makefile

我有一个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更改了本地工作副本的格式,因此即使在工作副本中,此规则也会停止工作.


小智 2

您可以添加一个目标,该目标生成实际 makefile 的副本,并进行删除 svn 依赖项的更改,使用它运行 make,然后将其删除。