0

ビルドプロセスの一部として、Makeはいくつかの.tgzファイルを作成します。

blah_1.tgz blah_2.tgz .... blah_n.tgz

rsync各ファイルで別のコマンド(たとえば)を呼び出すにはどうすればよいですか?

bashでは、次のようになります。

for file in `ls *.tgz`' do rsync $file DESTINATION; done

または:

ls | grep tgz | xargs rsync {} DESTINATION

しかし、おなじみのbash構文はMakeに準拠していないようです。何か案は?

4

1 に答える 1

1

うーん...このようなものが機能するはずです:

TGZ_FILES := blah_1.tgz blah_2.tgz .... blah_n.tgz
RSYNC_TARGETS := $(TGZ_FILES:%=rsync-%)

all : $(RSYNC_TARGETS)

.PHONY : $(RSYNC_TARGETS)
$(RSYNC_TARGETS) : rsync-% : %
    rsync $* DESTINATION

# Omit the following rule
# if .tgz files are made somewhere else (outside Make),
# and you assume they are always up-to-date
$(TGZ_FILES) : %.tgz : ...
    # rule to make each .tgz file

この例では、GNUMakeの次の機能を使用しています。

于 2012-05-30T11:34:00.293 に答える