Símbolo de porcentagem em $ (shell) na dependência do GNU Makefile

2

Estou ciente do LatexMk, mas não consigo instalá-lo na máquina em que quero executar pdflatex , portanto, preciso escrever um Makefile do qual %.pdf arquivos são destinos que dependem de %.tex e *.tex arquivos que %.tex está inserindo. Para isso eu escrevi o seguinte:

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

Agora, testei a expressão regular e ela parece funcionar bem, mas o %.tex no final não é passado corretamente, executando make output.pdf :

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

Como posso passar %.tex para o comando $(shell) ?

Estou usando o GNU make.

    
por Keelan 21.09.2015 / 00:21

1 resposta

2

Provavelmente, o que você está tentando fazer é mais bem resolvido criando dependências de listagem de arquivos, que você pode então include de seu Makefile. Este é um padrão comum em makefiles C e 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)

Leitura recomendada: Gerando pré-requisitos automaticamente no manual de criação.

    
por 21.09.2015 / 13:12

Tags