1. ホーム
  2. bash

[解決済み] ENV 変数やデフォルト値を使って Makefile の変数を定義する

2022-10-03 09:12:39

質問

簡単なことをしようとしています。

TMPDIR ?= /tmp

test:
    @echo $(TMPDIR)

これを実行すると動作します。

$ make test
/tmp

実行しても動きます。

$ make test -e TMPDIR=~/tmp
/home/user/tmp

にも使えるようにするにはどうしたらいいでしょうか。

$ TMPDIR=~/tmp make test
/home/user/tmp

どのように解決するのですか?

上記のコメントをフォローするために、例を挙げます。

T ?= foo
all:
        : '$(T)'

さて、このMakefileをいろいろな方法で実行してみると、期待通りの挙動を示します(以下のようになります。 foo を設定しない場合のみ T を設定しない場合のみです。)

$ make
: 'foo'

$ make T=bar
: 'bar'

$ T=bar make
: 'bar'