Re: Makefile selber schreiben

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 21 Jan 2005 19:09:37 +0100 (CET)

Matthias Fechner <idefix(at)fechner.net> wrote:
> Was ich machen will ist:
> make fig2dev
> Dann sollen alle Dateien die in xfigs/*.fig liegen in pictures/*.pdf
> umgewandelt werden. Das geht wunderbar mit fig2dev aber ich weiss
> leider nicht, wie ich das in einem Makefile formulieren soll.
> Kann mir hier vielleicht jemand helfen?

Ich verwende für ähnliche Zweck normalerweise rekursive
Makefiles. Man kriegt dabei zwar einen Knoten ins Hirn,
aber sie sind dafür relativ portabel und funktionieren
mit allen gängigen make-Implementationen.

Ich habe mir mal so ein Teil geschnappt und für Deinen
Zweck angepaßt (ungetestet, könnte noch Tippfehler ent-
halten!):

SRC_DIR=xfigs
SRC_SFX=.fig

TRG_DIR=pictures
TRG_SFX=.pdf

COMMAND=fig2dev -L pdf %s %s

MAKEMAKE= \
        cat Makefile; \
        SOURCES="`echo $(SRC_DIR)/*$(SRC_SFX)`"; \
        echo ""; \
        echo SOURCES=$$SOURCES; \
        echo ""

fig2dev:
        @( \
                $(MAKEMAKE); \
                TARGETS=""; \
                for SRC in $$SOURCES; do \
                        TRG=$(TRG_DIR)/`basename $$SRC $(SRC_SFX)`.$(TRG_SFX); \
                        TARGETS="$$TARGETS $$TRG"; \
                        printf '%s: %s\n' "$$TRG" "$$SRC"; \
                        printf '\t$(COMMAND)\n\n' "$$SRC" "$$TRG"
                done; \
                echo 'alltargets:$$TARGETS' \
        ) | make -f - alltargets

# END

Falls Dein make kein »-f -« versteht, um von standard-input
zu lesen, versuch stattdessen »-f /dev/stdin«.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
C++: "an octopus made by nailing extra legs onto a dog"
        -- Steve Taylor, 1998
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 21 Jan 2005 - 19:10:52 CET

search this site