私が使用することを理解して...私は... MakefileでMakefile変数はどのようにして計算されますか?
出力を与える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
を以下している...
何かに戸惑っています
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
&のMakefileを使用する新たなんですダブルの$
の使用を逃れるために$
が、なぜ私は理解していない単一のを使用して$
realpath
& dir
コマンドは機能しますが、id
コマンドにはこのコマンドを使用しません。
誰かが私の理解を助けることができますか?
おかげ
'realpath'と' dir'は 'GNU make'関数であり、' id'はありません。 Makefileの中でシェル関数を使いたい場合は '$(shell id -u)'を使います。 'realpath'と' sir'はエスケープされず、 'GNU make 'によって正しく解釈されます。 – Tim
Thanks @TimFこれを答えとして追加して受け入れることができますか? – TobyG
確かに、私はそれをやって、いくつかの詳細とリンクを追加しました:-) – Tim