2012-02-12 2 views
1

메이크 파일로 GNUplot을 사용하여 그래프를 생성하려고합니다. 디렉터리에있는 모든 * .plt 파일이 GNUplot을 통해 실행되도록하고 싶습니다. 그러나 작동 시키려면 볼 수 없습니다. 내가 개별적으로 .PLT 파일을 지정하는 경우메이크 파일 문제 (gnuplot)

all: %.tex 
%.tex: %.plt 
<tab> gnuplot < $< 

레시피가 잘 작동하지만 난 그들을 생산으로 나의 새로운 플롯을 선택하려면 : 여기에 지금까지 내 메이크입니다.

편집

: 내가 지금 일하고있어 것 같아요 :

# plots all files in the folder with .plt extensions 
SOURCES = $(wildcard *.plt) 
TARGETS = $(SOURCES:.plt=.tex) 

all: $(TARGETS) 

%.tex: %.plt 
    gnuplot < $< 

누군가가 (이하) 내 추론이 정확한지 여부를 확인 할 수 있나요? 이전에 all에 대한 파일을 지정하지 않았습니다. (나는 %로 약간 혼란 스럽습니다). 이제 와일드 카드를 사용하여 .plt 파일을 선택하여 변수 SOURCES을 할당합니다 (* .plt 대신 .plt를 사용하면 왜 작동하지 않습니까?). SOURCE을 할당하면 TARGETS 변수가 설정되고, 이제 all:에 빌드하도록 지정된 파일이 있습니다. 일치 규칙이 실행됩니다.

+1

예, 추론의 당신의 체인이 권리입니다. –

+1

* .plt 대신 .plt를 사용하면'wildcard' 함수가 쉘 glob 표현식을 사용하기 때문에 작동하지 않습니다. [here] (http://www.gnu.org/software/make/manual/make.html#Wildcards)에서 : make의 와일드 카드 문자는'*','?'및'[...]'이며, Bourne 쉘과 동일합니다. –

답변

5

all : %.tex은 대상 이름에 백분율이 없으므로 작동하지 않습니다. 즉, 후행 규칙이 아닙니다.

사용 wildcard function 모든 .plt 파일의 목록을 얻을 .tex로 대체 확장 이러한 파일상의 all 의존도를 추가합니다 :

PLT_FILES := $(wildcard *.plt) 
TARGETS := $(PLT_FILES:%.plt=%.tex) 

all: $(TARGET) 
%.tex: %.plt 
    gnuplot < $<