Seite 1 von 1

Werteübergabe für Makefile

Verfasst: Sonntag 13. April 2014, 08:59
von snafu
Moin,

was ist der zu empfehlende Weg, damit ein Benutzer bei der Ausführung eines Targets in einem Makefile einen eigenen Wert übergeben kann? Als Beispiel sei mal ein `install`-Target gegeben:

Code: Alles auswählen

install:
	$(PYTHON) setup.py install
Wobei vorab ``PYTHON=python`` für die Variable definiert wurde.

Was ist, wenn der Anwender nun z.B. mit `python3` statt mit `python` (welches bei dieser Annahme auf `python2.7` verweist) installieren möchte? Die mir zuerst in den Sinn gekommenen Möglichkeiten wären entweder ein manuelles Editieren des Makefiles oder die Definition eines angepassten Targets (`install3`). Beides finde ich nicht gerade prickelnd. Gibt es eine schönere Lösung?

Versuchsweise habe ich mal sowas gemacht:

Code: Alles auswählen

ifndef PYTHON
PYTHON=python
endif

install:
	$(PYTHON) setup.py install
Damit funktioniert jetzt als optionale Angabe etwas wie:

Code: Alles auswählen

PYTHON=python3 make install
Aber ist dies das übliche Vorgehen oder habt ihr andere Vorschläge zur Übergabe von `python3` an das Makefile?

Re: Werteübergabe für Makefile

Verfasst: Sonntag 13. April 2014, 09:07
von Leonidas
Das geht durchaus noch einfacher, ohne umgebungsvariablen:

Code: Alles auswählen

greeting=hallo

install:
        echo $(greeting)
Aufruf dann mit ``make greeting=servus install`` und so kenn ich das auch als üblichen Weg in Makefiles Variablen zu überschreiben.

Re: Werteübergabe für Makefile

Verfasst: Sonntag 13. April 2014, 09:37
von snafu
@Leonidas: Alles klar. Das ging für mich nicht so aus der Manpage für `make` hervor, wie man die Werteübergabe macht. Und in Sachen Makefiles habe ich mich bisher nur auf das Ausführen von ``make && make install`` beschränkt. Danke für die Hilfe.