makefile para Metapost: cómo compilar el archivo-N.pdf
Quiero dejar que el archivo makefile
maneje la compilación de figuras con metapost
.
El archivo fuente es file.mp
. Esto genera archivos .mps
file.1
, file.2
, etc. que luego se convierten en file-1.pdf
, file-2.pdf
, etc.
Aquí están mis reglas:
export TEX = latex
%: %.1
mptopdf $*
%.1: %.mp
mpost $*
Entonces, cuando ejecuto make file
se crean todos los archivos.
Sin embargo, no estoy satisfecho con esta solución. Es decir, me gustaría poder compilar solo uno de los archivos (por ejemplo, file-2.pdf
) ingresando make file-2
.
Desafortunadamente, no sé cómo escribir la regla para esto, aunque sospecho que podría ser trivial.
Pensé que el problema podría resolverse extrayendo el número del nombre del archivo dado en la línea de comandos (es decir, extraer 2
de file-2
) pero no está claro para mí cómo hacerlo tampoco.
davy.ai
Para permitir compilar solo un archivo específico (por ejemplo,
file-2.pdf
) utilizandomake
, puedes modificar las reglas existentes para incluir una variable para el número de archivo. Aquí tienes un ejemplo de cómo podrías modificar las reglas:Este
makefile
modificado te permite compilar todos los archivos.mp
de una sola vez ejecutandomake file
. Sin embargo, si deseas compilar solo un archivo.mp
específico y generar el archivo.pdf
correspondiente, puedes hacerlo ejecutandomake file-<n>.pdf
, donde<n>
es el número de archivo que deseas compilar.Por ejemplo, para compilar
file-2.pdf
, puedes ejecutarmake file-2.pdf
. Esto crearáfile-2.pdf
compilandofile.2
utilizandompost
y luego convirtiéndolo a PDF utilizandomptopdf
.Para extraer el número de archivo del nombre de archivo dado en la línea de comandos, puedes utilizar la función
$(basename)
enmake
. Aquí tienes un ejemplo de cómo puedes modificar las reglas para extraer el número de archivo:.PHONY: file-%
file-%:
$(eval num := $(shell echo $* | sed ‘s/.*-//’))
$(MAKE) file-$(num).pdf
Este
makefile
modificado te permite compilar solo un archivo específico ejecutandomake file-<n>
, donde<n>
es el número de archivo. La metafile-%
extrae el número de archivo (<n>
) del nombre de archivo dado utilizandosed
y luego lo pasa a la metafile-<n>.pdf
para la compilación.