GNU Makefile 종속성의 $(shell) 로그인 비율

GNU Makefile 종속성의 $(shell) 로그인 비율

LatexMk에 대해 알고 있지만 이를 실행하려는 컴퓨터에 설치할 수 없으므로 대상이 의존하는 파일 과 입력되는 파일이 pdflatex포함된 Makefile을 작성해야 합니다 . 이를 위해 다음과 같이 작성했습니다.%.pdf%.tex*.tex%.tex

%.pdf : %.tex $(shell perl -lne 'print "$$1\n" if /\\input{([\w-]+\.tex)}/' %.tex)

이제 정규식을 테스트했는데 제대로 작동하는 것 같았지만 %.tex마지막에는 올바르게 전달되지 않았습니다 make output.pdf. 실행하면 다음과 같은 결과가 나왔습니다.

Can't open %.tex: No such file or directory.

어떻게 명령 %.tex에 전달할 수 있습니까 ?$(shell)

저는 GNU make를 사용하고 있습니다.

답변1

어쩌면 당신이 원하는 것은 종속성을 나열하는 파일을 생성하여 더 잘 해결할 수 있으며, 그런 다음 includeMakefile 내에서 생성할 수 있습니다. 이는 C 및 C++ 메이크파일의 일반적인 패턴입니다.

SOURCES=foo.tex bar.tex

all: $(SOURCES:.tex=.pdf)

%.dep: %.tex
    perl -lne 'print "$*.pdf: $$1\n" if /\\input{([\w-]+\.tex)}/' <$< >$@

include $(SOURCES:.tex=.dep)

추천 도서:필수 구성 요소 자동 생성생산 매뉴얼에 있습니다.

관련 정보