Ich bin neu mit Makefiles & ist verwirrt durch etwas ...Wie werden Makefile-Variablen berechnet?
ich in einem Makefile folgend habe ...
USER_ID := $(id -u)
USER_ID_ESC := $$(id -u)
MAKEFILE := $(realpath $(lastword $(MAKEFILE_LIST)))
ROOT_DIR := $(dir $(MAKEFILE))
x:
echo $${USER_ID}
echo ${USER_ID}
echo $(USER_ID)
echo $${USER_ID_ESC}
echo ${USER_ID_ESC}
echo $(USER_ID_ESC)
echo $${ROOT_DIR}
echo ${ROOT_DIR}
echo $(ROOT_DIR)
exit 0
, die den Ausgang geben ...
echo ${USER_ID}
echo
echo
echo ${USER_ID_ESC}
echo $(id -u)
502
echo $(id -u)
502
echo ${ROOT_DIR}
echo /Users/toby/src/bitbucket.org/limtool/commissioning-tool-api/
/Users/toby/src/bitbucket.org/limtool/commissioning-tool-api/
echo /Users/toby/src/bitbucket.org/limtool/commissioning-tool-api/
/Users/toby/src/bitbucket.org/limtool/commissioning-tool-api/
exit 0
ich die Verwendung verstehen von Doppel $
, um die Verwendung von $
zu entkommen, aber was ich nicht verstehe, warum eine einzige $
für realpath
verwendendir
Befehle funktioniert, aber die Verwendung für den id
Befehl nicht.
Kann mir jemand beim Verstehen helfen?
Dank
'realpath' und' dir' sind 'GNU make' Funktionen,' id' ist nicht. Wenn Sie eine Shell-Funktion in einem Makefile verwenden wollen, verwenden Sie '$ (shell id -u)'. 'realpath' und' sir' sind nicht entkommen, sie sind richtig interpretiert von 'GNU make' – Tim
Dank @TimF Care, um das als Antwort hinzuzufügen, damit ich akzeptieren kann? – TobyG
Sicher, ich habe es getan und einige weitere Details und Links hinzugefügt :-) – Tim