Ich schreibe Makefiles (GNU make) für eine Anwendung mit mehr als einem Modul. Genauer gesagt habe ich für jedes Modul ein Makefile. Außerdem habe ich ein Master-Makefile, das das Makefile jedes Moduls aufruft. Ich habe versucht, aus diesen Makefiles mehrere Variablen herauszufiltern, die überall benötigt werden. Ich habe eine init.mk
Datei zu Beginn der Master-Make-Datei mit folgendem enthalten:Makefile-Bedingung schlägt für definierte Variable fehl
export OS = linux
ifeq ($(OS),linux)
export SHELL := /bin/bash
else ifeq ($(OS),windows)
export SHELL := cmd
else
export SHELL :=
endif
Wenn ich mit diesem Laufe machen, bekomme ich einen Fehler 127, weil der Vergleichstest fehlschlägt und die SHELL
Variable auf nichts festgelegt. Wenn ich im Abschnitt else
/bin/bash
hinzufüge, schlägt make nicht fehl.
Warum wird die OS
Variable nicht richtig verglichen?
Grüße
Make Griffe 'SHELL' in Sonder je nach Betriebssystem, auf Windows zum Beispiel könnte es sogar [alles, was Sie sagen ignorieren (https://www.gnu.org/software/make/manual/make.html#Choosing-the-Shell). – user657267
Haben Sie zusätzliche Leerzeichen am Ende der 'export OS = linux' Zeile? – MadScientist
Ich habe einen Platz und einen Kommentar – BobMorane