私は次の(非常に単純化された)Makefileを持っています:
# Makefile
MAKESH=shell
USER=$($MAKESH logname)
これは、コマンドが呼び出さUSER
れたかのように、ログイン名を変数に格納することを目的としています。$(shell logname)
しかし、これは起こりません。make
変数の評価方法が原因だと思います。
誰かがこれまたは可能な回避策についてもう少し洞察を持っていますか?つまり、make
それ$MAKESH
が実際にshell
コマンドであると明示的に伝えますか?
ありがとう。
編集
次の例を考えてみましょう。
#parent.mk
...
include child.mk
...
-------------------
#child.mk
export $(shell logname)/path1
export $(shell logname)/path2
-------------------
#bash_script.sh
...
source child.mk
...
(この例では、child.mkのソーシングは失敗します)
基本的に、私がやりたかったのは、現在のユーザーに応じてパス名をエクスポートするファイルを作成することです。構文は、makefileとbashスクリプトの両方で有効である必要があります。これは、両方の場所からインクルード/ソースできるためです。
また、これらのファイルはより大きなプロジェクトの一部であり、相互接続が少し混乱しているため、これらのファイルに微妙な変更を加えたいと思いました。
私はついにこれで行くことにしました:
#parent.mk
...
export logname=$(shell logname)
include child.mk
...
-------------------
#child.mk
export $(logname)/path1
export $(logname)/path2
-------------------
#bash_script.sh
...
source child.mk
...
これはかなりハッキーで、少し危険ですが、機能します。よりエレガントな方法/アプローチをご存知の場合は、お知らせください。
最後に、事前に編集された質問に有効な解決策(および警告)に感謝します。