GNU/Linux >> Linux の 問題 >  >> Linux

makefileでどのようにeval関数を使用できますか?

これを理解する最も簡単な方法は、eval を info に置き換えることです:

$(info $(call func, foo, 1.c))

これにより、最初の展開の結果が出力として表示されるため、make が実際に解析する内容を確認できます。 OBJPATH 変数の値を指定していませんが、obj の場合 たとえば、あなたの場合、(呼び出し関数の) 最初の展開は次のようになります:

tmp = obj/foo
objs += $(tmp)
$(tmp) : 1.c
    gcc $^ -o [email protected]

次に、make パーサーがこれを評価し、その過程で再び展開します。つまり、$(tmp) のようになります。


これは私にとって問題でしたが、良い回避策を見つけました。私の場合は、AWS docker login に関連していました。以前のシェル スクリプトには次のものがありました:

eval $(aws ecr get-login --region eu-west-1 --no-include-email --profile someprofile)

しかし、それを Makefile に入れると うまくいきませんでした。これを回避するには、行を次のように変更します:

$$(aws ecr get-login --region eu-west-1 --no-include-email --profile someprofile)


Linux
  1. 故障した Btrfs デバイスを交換する方法

  2. CPU 周波数スケーリングを無効にするにはどうすればよいですか?

  3. Linuxでファイルをシンボリックリンクするにはどうすればよいですか?

  1. 自分が画面にいるかどうかを確認するにはどうすればよいですか?

  2. メイン関数が返したものを取得するにはどうすればよいですか?

  3. Makefile にスタティック ライブラリを含める方法

  1. GNU Makefile で使用されるシェル コマンドの終了ステータスを取得するには?

  2. /tmp のディスク容量を確認するにはどうすればよいですか?

  3. ディスク io を監視するにはどうすればよいですか?