0

我正在尝试从 CVS 标记自动设置生成文件中的版本。这是makefile的相关部分:

VERSION =$Name:  $

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

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

4

1 回答 1

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 $$))
于 2012-10-26T19:21:59.007 回答