Variable in Makefile durch Shell Command
Guten Tag,
ich habe ein Makefile namens $(ANDROID_BUILD_TOP)/vendor/beanstalk/config/common.mk, in das ich genau eine einzige Variable namens USE_SU aus einem anderen Makefile namens $(ANDROID_BUILD_TOP)/device/*/$(BS_BUILD)/BoardConfig.mk, das mehrere Variablen besitzt, importieren möchte. Include würde nicht gehen, weil ja dadurch das gesamte andere Makefile (BoardConfig.mk) "eingebunden" werden würde.
ANDROID_BUILD_TOP und BS_BUILD sind für beide Makefiles ansprechbar, somit können die Pfade auch korrekt erkannt werden. Ich dachte mir jetzt ich kann in das common.mk file eine Zeile schreiben die ungefähr so aussieht:
USE_SU := $(shell "irgendein shell command, eventuell mit grep, der aus dem BoardConfig.mk File die USE_SU Variable ausliest")
Das gewünschte Ergebnis wäre dann, dass die USE_SU Variable, wirklich nur die USE_SU Variable, aus der BoardConfig.mk auch in der common.mk Datei verfügbar wäre. Da die BoardConfig.mk von Nutzer zu Nutzer anders aussehen kann, kann ich auch leider nicht festlegen, dass sich die USE_SU Zeile in einer festen Zeile befindet. Außerdem soll USE_SU in der common.mk Datei am Ende nicht so aussehen "USE_SU := USE_SU := true", sondern nur "USE_SU := true". Je nachdem, wie es in der BoardConfig.mk Datei definiert ist, kann die Variable auch "USE_SU := false" heißen oder auch überhaupt nicht vorhanden sein. Wenn diese Zeile mit USE_SU nicht existiert, wäre das aber an sich nicht sehr schlimm, denn später wird in der common.mk Datei nur gecheckt, ob USE_SU := true ist oder nicht. USE_SU darf dabei sogar leer sein und es gibt trotzdem keinen Error. Ich wäre dankbar über einen Shell Command oder vielleicht sogar irgendeine andere Lösung, die mein gewünschtes Ziel erfüllt.
Vielen, vielen Dank schon mal!
ich habe ein Makefile namens $(ANDROID_BUILD_TOP)/vendor/beanstalk/config/common.mk, in das ich genau eine einzige Variable namens USE_SU aus einem anderen Makefile namens $(ANDROID_BUILD_TOP)/device/*/$(BS_BUILD)/BoardConfig.mk, das mehrere Variablen besitzt, importieren möchte. Include würde nicht gehen, weil ja dadurch das gesamte andere Makefile (BoardConfig.mk) "eingebunden" werden würde.
ANDROID_BUILD_TOP und BS_BUILD sind für beide Makefiles ansprechbar, somit können die Pfade auch korrekt erkannt werden. Ich dachte mir jetzt ich kann in das common.mk file eine Zeile schreiben die ungefähr so aussieht:
USE_SU := $(shell "irgendein shell command, eventuell mit grep, der aus dem BoardConfig.mk File die USE_SU Variable ausliest")
Das gewünschte Ergebnis wäre dann, dass die USE_SU Variable, wirklich nur die USE_SU Variable, aus der BoardConfig.mk auch in der common.mk Datei verfügbar wäre. Da die BoardConfig.mk von Nutzer zu Nutzer anders aussehen kann, kann ich auch leider nicht festlegen, dass sich die USE_SU Zeile in einer festen Zeile befindet. Außerdem soll USE_SU in der common.mk Datei am Ende nicht so aussehen "USE_SU := USE_SU := true", sondern nur "USE_SU := true". Je nachdem, wie es in der BoardConfig.mk Datei definiert ist, kann die Variable auch "USE_SU := false" heißen oder auch überhaupt nicht vorhanden sein. Wenn diese Zeile mit USE_SU nicht existiert, wäre das aber an sich nicht sehr schlimm, denn später wird in der common.mk Datei nur gecheckt, ob USE_SU := true ist oder nicht. USE_SU darf dabei sogar leer sein und es gibt trotzdem keinen Error. Ich wäre dankbar über einen Shell Command oder vielleicht sogar irgendeine andere Lösung, die mein gewünschtes Ziel erfüllt.
Vielen, vielen Dank schon mal!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 334162
Url: https://administrator.de/forum/variable-in-makefile-durch-shell-command-334162.html
Ausgedruckt am: 25.04.2025 um 07:04 Uhr
2 Kommentare
Neuester Kommentar

mit grep und cut
oder mit sed
hauruck
USE_SU := $(shell cat anderebuild.mk | grep '^USE_SU' | cut -d' ' -f3)
USE_SU := $(shell sed -rne 's/^USE_SU\s*:=\s*(.*)/\1/ip' anderebuild.mk)