1

「ベータ」のおかげで私の解決策:

RLS_DIRECTORY = $(shell svnversion -cn | sed 's/:/-/')
SVN_VERSION   = $(shell svnversion -cn | sed -r 's/.+://')
RELEASE_NOTES = $(RLS_DIRECTORY:=/release-notes-$(SVN_VERSION:=.txt))

-include svn-version.mk

SVN_OLD_VERSION ?= 0

.PHONY = all zip release

release: $(RELEASE_NOTES)

$(RLS_DIRECTORY):
    mkdir -p $@

$(RELEASE_NOTES): $(RLS_DIRECTORY)
    @echo 'Creating release notes ($@)'
    @svn log -r $(SVN_OLD_VERSION):HEAD -v > $@ \
      && echo "SVN_OLD_VERSION ?= `svnversion -c | sed -r 's/.+://'`" \
       > svn-version.mk

一言で言えば、makeそうするように頼むと(# make release)はバージョン固有のディレクトリを作成し、ターゲットが最後に呼び出されてからのログデータをバージョン固有のログファイルにダンプします。永続データ(SVN_OLD_VERSION)はsvn-version.mkに保存され、条件付きで含まれます。


元の投稿:

プロジェクトの「make」ファイルにある他のSubversion固有のターゲット(このようなの中には、最後に「release」ターゲットが呼び出されたときからログファイルを作成する目的で追加しようとしているターゲットがいくつかあります。ここのところ:

SVN_VERSION ?= 0
-include svn-version.mk

RLS_DIR = `svnversion -cn | sed 's/://'`

.PHONY = $(RLS_DIR) notes release

notes: $(RLS_DIR)\notes.txt
release: notes

svn-version.mk:
    @echo 'Generating $@'
    @echo "SVN_VERSION ?= `svnversion -c | sed -r 's/.+://'`" > $@

$(RLS_DIR):
    mkdir $@

$(RLS_DIR)\notes.txt: $(RLS_DIR)
    svn log -r $(SVN_VERSION):HEAD > $@

しかし、私は2つのことを理解しようとしています。

*1。出力に基づいてディレクトリを作成するにはどうすればよいですか?svnversion上記のエラーは「***ターゲットパターンに`%'が含まれていません。停止してください。」というエラーが表示されます。svnversionは「nnnn:mmmm」を生成します。ディレクトリ「nnnn-mmmm」を作成したいと思います。)*

2. 「release」ターゲットが実行されたときにのみ再構築するためにインクルードファイル「svn-version.mk」を取得するにはどうすればよいですか?

4

1 に答える 1

2

あなたの質問は完全には明確ではありません-そして私は破壊に精通していません-しかし私は知識に基づいた推測をすることができます:

  1. バックティックではなく「シェル」を使用して、RLS_DIRを設定します。
    RLS_DIR = $(shell svnversion -cn | sed's /:/-/')
    
  2. これは物事を整理するための奇妙な方法です。他の目的でsvn-version.mkが必要でない限り、私はこれを提案します:
    リリース:SVN_VERSION?= $(shell svnversion -c | sed -r's /.+://')
    

編集:
あなたがsvn-version.mkで何をしようとしているのかはまだ完全にはわかりませんが、svn-version.mkは「リリース」の前提条件になる可能性があります。svn-version.mkがlog.txtに依存している場合は、log.txtを前提条件にすることができます。そうしないと、svn-version.mkが毎回再作成されるのを防ぐのに苦労します(おそらくまったく含めないでください)。

于 2009-09-28T16:10:59.773 に答える