0

CVS タグから makefile のバージョンを自動的に設定しようとしています。makefile の関連部分は次のとおりです。

VERSION =$Name:  $

プロジェクトをチェックアウトすると、問題なく動作します。キーワードはタグに置き換えられます。問題は、キーワードが置換されない限り(つまり、$ 記号がなくなった場合)、そのまま Makefile が機能しないことです。そのため、たとえば、コミットする前にコードをコンパイル チェックしません。$ を使用してエスケープすると$$Name $$、チェックアウトされたバージョンはコンパイルされず、$$ になります。

これを回避する方法はありますか?

4

1 に答える 1

0

GNU make では、この種の構文が機能します。

COMMAV := ,v
CVSFILE := $(patsubst %:,,$$RCSfile: Makefile,v $$)
CVSVERS := $(patsubst %:,,$$リビジョン: 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 に答える