2012-09-04 2 views
0

여러 개의 json 파일을 구문 분석하고, 내용을 가져오고, 일부 텍스트를 추가/추가하고, 새 문자열을 다른 파일에 저장하려고합니다.Makefile이 여러 파일을 처리합니다.

#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 

을하기 때문에 내가 변수는 내가 파일의 목록은이 일에 대해 갈 것 어떻게 외부 규칙을 설정할 수 있습니다 이해하는 것과 : 현재 나는이 하나의 파일에 대해 작동하는가?

업데이트 : 복사 할 파일은 별도의 디렉토리에있을 수 있지만 모두 같은 대상 디렉토리에 복사해야합니다. 파일 목록에 대한 추측을 바탕으로

+0

하나 이상의 예제를 제공하면 도움이됩니다. '$ (SERVERPATH)/xx/mod/supervisor/cfg/prod /'에있는 파일들의 목록 ('config.json','some.json','other.json')을 의미합니까? '$ (CLIENTTPATH)/public/js/shared /'에 수정되고 저장 되었습니까? – Beta

+0

예 @Beta, 모든 파일이 같은 원본 디렉터리에있는 것은 아니지만 모두 같은 대상 디렉터리에 있습니다. – Sofia

답변

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 $<`);" > [email protected] 

편집 : 소스 파일이 여러 디렉토리에 있지만 대상 모두가 있습니다 ... 같은 디렉토리에 가면
그것을하는 몇몇 방법. 이것은 아마도 최고 일 것입니다 :

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 $<`);" > [email protected] 
+0

파일이 별도의 디렉터리에있는 경우는 어떨까요? 예를 들어, 내가 SHAREDFILES 파일의 절대 경로 목록을 가지고 있다면, 어떻게 할 수 있습니까? – Sofia

관련 문제