On Montag, 28. Oktober 2002 16:13, Joerg Rossdeutscher wrote:
ich habe mir für meine perl-Programme ein Makefile gebaut, das alles an die richtige Stelle schieben soll.
Hier mal Ausschnitte, die mit "make binaries" aufgerufen werden:
binaries: $(BIN)fontlinge_database_assistant
[...]
$(BIN)fontlinge_database_assistant: cp -v scripts/fontlinge_database_assistant $(BIN) chown root:root $(BIN)/fontlinge_database_assistant
Das funktioniert prima bei der Erstinstallation. Wenn der User aber ein Update aufspielen will, sagt "make binaries" nur
make: Für das Target »binaries« gibt es nichts zu tun.
Da hat er auch Recht: "binaries" hängt von "fontlinge..." ab, und das ist aktuell, so weit "make" feststellen kann - es hängt ja von nichts ab, also ist es immer aktuell, wenn es existiert. Was Du hier brauchst, ist keine echte Abhängigkeit bei "binaries", sondern eine Pseudo-Abhängigkeit - d.h. es steckt kein echtes File dahinter. Etwa: binaries: install_binaries ... install_binaries: cp -v ... chown ... Dann wird es bedingungslos ausgeführt, wenn Du "make binaries" aufrufst. Übrigens solltest Du Dir sehr gut überlegen, ob Du per "make" wirklich eine gesamte Directory-Hierarchie durch die Gegend kopieren willst - dann nimmt er natürlich jeglichen Schrott mit, der dort evtl. noch herumliegt, z.B. auch alle ".xvpics" -Directories samt Inhalt, Editor-Backup-Files u.s.w.; gezieltes "install" für genau die richtigen Files hat sich da besser bewährt. "install" legt insbesondere auch gleich die benötigten Directories an, und auch die Permissions und Besitzer kannst Du mit angeben. Schau' Dir doch mal ein paar Makefiles an, die von configure/autoconf/automake generiert worden sind - oder, noch besser, benutze diese Tools gleich, dann bist Du systemunabhängig und kannst Dir so manchen Formalismus in Makefiles sparen (wird dann automatisch generiert).
Es scheint auch nicht sowas wie "make --force" zu geben.
Nein. Das würde auch der Idee von "make" widersprechen, nur das zu bauen, was
nötig ist.
CU
--
Stefan Hundhammer