如何在Makefile中转义cvs关键字?

时间:2012-10-26 19:07:54

标签: makefile cvs gnu-make

我正在尝试从CVS标记中自动设置makefile中的版本。这是makefile的一部分:

VERSION =$Name:  $

当我结帐项目时,这工作正常。关键字将替换为标记。问题是因为除非关键字被替换(即$符号消失),否则Makefile不起作用,所以我不打算例如在提交之前编译检查代码。 如果我使用$$Name $$转义$,那么签出的版本将无法编译,因为它将成为$$。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

在GNU make中,这种构造起作用:

COMMAV  := ,v
CVSFILE := $(patsubst %:,,$$RCSfile: Makefile,v $$)
CVSVERS := $(patsubst %:,,$$Revision: 1.130 $$)
CVSDATE := $(patsubst %:,,$$Date: 2012/10/09 22:02:16 $$)
CVSINFO := $(subst $$,,$(subst $(COMMAV),,$(CVSFILE))$(CVSVERS)$(CVSDATE))

在您的情况下,您正在寻找修订版,因此我认为直接的解决方案是:

VERSION := $(subst $$,,$(patsubst %:,,$$Revision: 1.130 $$))