Werteübergabe für Makefile

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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?
Zuletzt geändert von Anonymous am Sonntag 13. April 2014, 09:12, insgesamt 1-mal geändert.
Grund: Sprachen in den Code-Tags korrigiert (make & bash statt Makefile & sh)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@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.
Antworten