Ich erstelle gerade ein Makefile, das unter anderem folgende Regel enthalten soll: "make sources [SID=<VersionsID>]". make soll sowohl mit dem Target "sources" als auch "sources SID=..." aufgerufen werden können. Wie ich die Regel sources definiere ist klar, aber was mache ich mit der SID-Option? Ich habe schon in diversen Tutorials nachgeschaut, auch im GNU Make Manual; aber ich konnte nichts finden. Hat vielleicht jeman eine Idee? MfG, Marc
Marc Hinrichs wrote:
Ich erstelle gerade ein Makefile, das unter anderem folgende Regel enthalten soll: "make sources [SID=<VersionsID>]". make soll sowohl mit dem Target "sources" als auch "sources SID=..." aufgerufen werden können. Wie ich die Regel sources definiere ist klar, aber was mache ich mit der SID-Option? Ich habe schon in diversen Tutorials nachgeschaut, auch im GNU Make Manual; aber ich konnte nichts finden. Hat vielleicht jeman eine Idee?
Definiere Dir eine Variable, z.B. SID, im Makefile, die zunaechst leer ist. Ruft man das Target "sources" mit dem Befehl "make sources" auf, so ist die Variable leer. Benutzt man hingegen den Befehl "make sources SID=12345", dann ueberschreibt die an der Kommandozeile mitgegebene Variable den Default-Wert im Makefile (der muss uebrigens nicht leer sein, Du kannst da auch einen richtigen Default-Wert setzen). Kleines Beispiel: SID = sources: ; @echo "Aufruf erfolgt mit SID = ${SID}" Rufe das Makefile einmal mit "make sources" und einmal mit "make sources SID=blafasel" auf. Dann solltest Du folgende Ausgabe er- halten: thertw@einstein:~/tmp> make sources Aufruf erfolgt mit SID = thertw@einstein:~/tmp> make sources SID=blafasel Aufruf erfolgt mit SID = blafasel thertw@einstein:~/tmp> Je nachdem, was Du genau fuer einen Befehl ausfuehren moechtest, musst Du dann eben immer die Variable SID im Makefile verwenden bei den entsprechenden Targets. Hoffe, das hilft. Ansonsten musst Du etwas genauer werden mit dem, was Du vorhast. Gruesse, Thomson -- Thomas Hertweck, Dipl.-Geophys. Geophysikalisches Institut, Universitaet Karlsruhe (TH)
participants (2)
-
Marc Hinrichs
-
Thomas Hertweck