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