PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schleife in makefile?



danielinteract
04-08-2007, 16:23
Hallo Leute,

ich habe ein (GNU) Makefile, in dem mehrere gleiche Regeln hintereinander kommen, bei denen aber jeweils nur ein Zahl unterschiedlich ist. Das sieht etwa so aus:



kap1.tex: kap1.Rnw;
[tab] bliblablu kap1.Rnw

kap2.tex: kap2.Rnw;
[tab] bliblablu kap2.Rnw

kap3.tex: kap3.Rnw;
[tab] bliblablu kap3.Rnw
...


Gibt es eine Möglichkeit, diese Regeln in einer Schleife über die Kapitelnummern
zu deklarieren? Das würde das ganze deutlich hübscher machen :-)

danke,
mfg
Daniel

jan61
06-08-2007, 16:49
Es gibt verschiedene Möglichkeiten, die Sache zu vereinfachen:

Wenn Du nur bestimmte Kapitel bearbeiten willst:

all: kap1.tex kap2.tex kap3.tex
kap%.tex: kap%.Rnw
[tab]bliblablu $^Damit definierst Du eine "Pattern Rule" und nutzt im Kommando die automatische Variable $^, das Target der Regel könntest Du mit $@ ansprechen.

Wenn Du alle Kapitel bearbeiten willst, dann geht es auch ohne Aufzählung der Quelldateien, man holt sie sich einfach:

all: $(patsubst kap%.Rnw, kap%.tex, $(wildcard kap*.Rnw))
kap%.tex: kap%.Rnw
[tab]bliblablu $^Hier wird zusätzlich mit 2 Funktionen des make gearbeitet.

Jan