我正在尝试从CVS标记中自动设置makefile中的版本。这是makefile的一部分:
VERSION =$Name: $
当我结帐项目时,这工作正常。关键字将替换为标记。问题是因为除非关键字被替换(即$符号消失),否则Makefile不起作用,所以我不打算例如在提交之前编译检查代码。
如果我使用$$Name $$
转义$,那么签出的版本将无法编译,因为它将成为$$。
有没有办法解决这个问题?
答案 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 $$))