/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Makefile problem
Fra : Henrik Farre


Dato : 30-06-03 22:06

Hej

Min hjemmeside er opbygget af en stak xml filer som jeg vha xsltproc laver
om til html filer, jeg er ved at lave en Makefile der kan gøre dette for
mig.

Dvs at jeg gerne vil have xml filen foo1.xml lavet om til foo1.html via
xsltproc og et xslt stylesheet.

Mit problem er at min Makefile laver den samme xml fil om til en masse
forskellige html filer, f.eks.:
   bla.xml > bla.html
   bla.xml > foo1.html
   bla.xml > foo2.html
   ... osv

Hvor den skulle lave:
   bla.xml > bla.html
   foo1.xml >foo1.html
   foo2.xml > foo2.xml
   ...osv

Hvordan kan jeg lave en Makefile hvor jeg ikke skal lave en regel for hvor
eneste html fil? Som det er nu bruger jeg:

   XML_FILES := $(shell find $(XML_PATH) -type f -iname "*.xml")

Det er nødvendig da nogle af filerne ligger i undermapper.
Så laver jeg en liste med alle html filer:

   HTML_FILES := $(patsubst %.xml,%.html,$(XML_FILES))

Resten af min Makefile ser således ud:

   all: $(HTML_FILES)

   $(HTML_FILES): $(XML_FILES)
      xsltproc stylesheet.xsl $< > $@

Hvordan skal jeg lave det? Griber jeg det helt forkert an, er der måske en
lettere måde?

--
Mvh. / Kind regards
Henrik Farre

http://www.cs.auc.dk/~enrique

 
 
Lars Kongshøj (01-07-2003)
Kommentar
Fra : Lars Kongshøj


Dato : 01-07-03 21:52

Henrik Farre wrote:
> Hvordan kan jeg lave en Makefile hvor jeg ikke skal lave en regel for hvor
> eneste html fil? Som det er nu bruger jeg:
> HTML_FILES := $(patsubst %.xml,%.html,$(XML_FILES))
> Resten af min Makefile ser således ud:
> all: $(HTML_FILES)
> $(HTML_FILES): $(XML_FILES)
> xsltproc stylesheet.xsl $< > $@
> Hvordan skal jeg lave det? Griber jeg det helt forkert an, er der måske en
> lettere måde?

Skal ikke gøre mig ekspert på makefiles, men da ingen andre har svaret
prøver jeg alligevel:

Jeg mener at huske at syntaksen er noget al a:

..xml.html:

I stedet for sin du skriver:

$(HTML_FILES): $(XML_FILES)

Det får den vel til at tro at hver enkelt html-fil er afhængig af
samtlige xml-filer. Og hvad hvis html-filen ikke findes i forvejen.

--
Lars Kongshøj
http://www.kongshoj.com/

Henrik Farre (01-07-2003)
Kommentar
Fra : Henrik Farre


Dato : 01-07-03 22:57

On Tue, 01 Jul 2003 22:52:16 +0200
Lars Kongshøj <lars_kongshoj@hotmail.com> wrote:


> .xml.html:
>
> I stedet for sin du skriver:
>
> $(HTML_FILES): $(XML_FILES)
>
> Det får den vel til at tro at hver enkelt html-fil er afhængig af
> samtlige xml-filer. Og hvad hvis html-filen ikke findes i forvejen.

Ja ok det giver mening. Jeg har prøvet at lege lidt med hvad du forslår,
og er kommer frem til::

%.html : %.xml
   @echo $< $@

all: ${HTML_FILES}

Hvilket virker :) og du havde helt ret i det du sagde:
http://www.gnu.org/manual/make/html_chapter/make_10.html#SEC116


Mange tak for hjælpen

--
Mvh. / Kind regards
Henrik Farre

http://www.cs.auc.dk/~enrique

Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408852
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste