TeX / make finomhangolása

Fórumok

Sziasztok!

Egy kollégám akadt bele a fent említett problémába, és megkért, vessem fel ezen a fórumon is, hátha akad, aki meg tudja oldani.

Egy TeX-ben írt jelentés fordítását akarja automatizálni.
Ez (jelenleg) áll a report.tex nevű főszövegből és a tables.tex nevű
fájlból, ami a mellékletekben lévő táblázatokat képezi, és az

\input{tables.tex}

parancs révén kerül be a főszövegbe.

A tables.tex-et egy perl script hozza létre egy nagy halom adatfájl
átnyálazásával. Ez sokáig tart, és nem akarja, hogy minden
újrafordításkor ez is lefusson. (Az adatfájlok másik könyvtárban
vannak).

A make elvileg pont arra van, hogy megnézze, mi változott a legutóbbi
fordítás óta, és csak azt fordítja újra, amit kell. Tehát a makefile így fest:


vpath %.dbt ../measurements
vpath %.dat ../measurements/data
report.pdf: report.tex tables.tex
pdflatex report.tex
tables.tex: database.dbt *.dat
perl maketables.pl

Itt ugyebár a database.dbt és *.dat azok a fájlok, amik alapján a
táblázat készül. Ha ezek változtak, akkor nyilván újra kell számolni a
táblázatokat, de ha nem, akkor nem kell.

Ez panaszkodik, hogy:

make: *** No rule to make target `database.dbt', needed by `tables.tex'.
Stop.

Ha viszont beírja az alábbi két sort a makefile végére:


database.dbt:
*.dat:

tehát két üres rule-t, akkor a make lefut, de minden alkalommal
végigcsinál mindent!
A cél az volna, hogy csak azt fordítsa újra/futtassa le, amit
kell.

Ha van valakinek ötlete, kérem, ne tartsa magában! :)
Előre is köszönjük mindketten!

Hozzászólások

Szerintem:
Nem találja a database.dbt-t, ezért megpróbálja legyártani, de nem talál hozzá rule-t, ezért leáll.
A +2 soros megoldásnál már van hozzá rule, ezért tovább tud futni, de mivel minden alkalommal azt hiszi, hogy a database.dbt hiányzik, minden alkalommal lefuttatja a maketables.pl-t.
Én ellenőrizném, hogy helyes-e ez az utvonal: ../measurements

Ill. szerintem a *.dat-tal is gond lesz, mert az nem az összes keresési utvonalon lévő .dat-ot jelenti, csak az aktuális könyvtárban lévőket.