El archivo Makefile parece tomar ambos ingeres en lugar de uno a la vez.
Tengo dos archivos 1.gv
y 2.gv
que son archivos de Graphviz.
Escribí este Makefile basado en lo que pude entender:
DOT=dot
FORMAT=svg
SRC=$(wildcard *.gv)
OUT=$(subst .gv,.$(FORMAT),$(SRC))
all: $(OUT)
$(OUT): $(SRC)
$(DOT) -T$(FORMAT) $^ -o $@
.PHONY: clean
clean:
rm -f $(OUT)
La limpieza parece funcionar, el único problema parece ser que se ejecuta así:
dot -Tsvg 1.gv 2.gv -o 1.svg
dot -Tsvg 1.gv 2.gv -o 2.svg
en lugar de:
dot -Tsvg 1.gv -o 1.svg
dot -Tsvg 2.gv -o 2.svg
davy.ai
Para solucionar el problema de que el archivo Makefile ejecute
dot
tanto en los archivos1.gv
como en2.gv
al mismo tiempo, necesitamos modificar el objetivo$(OUT)
para que utilice$<
en lugar de$^
. Esto garantizará quedot
se ejecute por separado para cada archivo fuente y que los archivos de salida tengan el nombre correcto. Aquí está el archivo Makefile actualizado:Con este Makefile actualizado, al ejecutar
make
, se generarán correctamente los archivos1.svg
y2.svg
a partir de1.gv
y2.gv
, respectivamente. Al ejecutarmake clean
, se eliminarán todos los archivos SVG generados.