0

いくつかの json ファイルを解析し、その内容を取得し、テキストを前に追加/追加して、新しい文字列を別のファイルに保存したいと考えています。現在、単一のファイルで機能するこれがあります:

#set variables for shared libs
SHAREDFILE=$(SERVERPATH)/xx/mod/supervisor/cfg/prod/config.json
JSONCONF = `cat "$(SHAREDFILE)"`

share:
    @echo "Sharing node-client code in ${PROJECT}.- ENV $(ENV)..."
    @echo "parseConfig($(JSONCONF));" > $(CLIENTPATH)/public/js/shared/config.json

私が理解していることから、変数はルールの外でのみ設定できるため、ファイルのリストに対してこれを行うにはどうすればよいですか?

更新: コピーするファイルは別々のディレクトリに置くことができますが、それらはすべて同じターゲット ディレクトリにコピーする必要があります。

4

1 に答える 1

2

ファイルのリストに関する推測に基づいて:

SHAREDFILES = foo.json bar.json baz.json

TARGETS = $(addprefix $(CLIENTPATH)/public/js/shared/, $(SHAREDFILES))

share: $(TARGETS)

$(TARGETS) : $(CLIENTPATH)/public/js/shared/%.json : $(SERVERPATH)/xx/mod/supervisor/cfg/prod/%.json
    @echo "Sharing node-client code in ${PROJECT}.- ENV $(ENV)..."
    @echo "parseConfig(`cat $<`);" > $@

EDIT:
ソースファイルが複数のディレクトリにあるが、ターゲットがすべて同じディレクトリにある場合...それを行うにはいくつかの方法があります。これはおそらく最高です:

SHAREDFILES = some/path/foo.json another/path/bar.json yet/another/path/baz.json

TARGETDIR = $(CLIENTPATH)/public/js/shared
TARGETS = $(addprefix $(TARGETDIR)/, $(notdir $(SHAREDFILES)))

vpath %.json $(dir $(SHAREDFILES))

share: $(TARGETS)

$(TARGETS) : $(TARGETDIR)/%.json : %.json
    @echo "Sharing node-client code in ${PROJECT}.- ENV $(ENV)..."
    @echo "parseConfig(`cat $<`);" > $@
于 2012-09-05T02:07:03.010 に答える