1. ホーム
  2. linux

[解決済み] Makefileの$PATHにdirを追加するには?

2022-11-17 13:27:11

質問

テストを実行するMakefileを書きたいのです。テストは'./tests'ディレクトリにあり、テストされる実行ファイルは'./bin'ディレクトリにあります。

テストを実行すると、ディレクトリ ./bin が $PATH に含まれていないため、実行ファイルが見えません。

私がこのようなことをするとき

EXPORT PATH=bin:$PATH
make test

で、すべてうまくいきました。しかし、私はMakefileの$PATHを変更する必要があります。

シンプルなMakefileの内容です。

test all:
    PATH=bin:${PATH}
    @echo $(PATH)
    x

パスは正しく表示されますが、ファイルxは見つかりません。

これを手動でやると

$ export PATH=bin:$PATH
$ x

であれば、すべてOKです。

Makefileの$PATHを変更するにはどうしたらよいでしょうか?

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

あなたは、試しましたか? export ディレクティブ というディレクティブはありますか?

export PATH := bin:$(PATH)

test all:
    x

また、この例にはバグがあります。

test all:
    PATH=bin:${PATH}
    @echo $(PATH)
    x

まず、値が echo を拡張したものです。 PATH という変数がシェルではなく、Make によって実行されます。もし期待通りの値が表示されるのであれば、あなたが設定した PATH を設定したのでしょう。このような動作を防ぐには、ドルをエスケープする必要があります。

test all:
    PATH=bin:$$PATH
    @echo $$PATH
    x

次に、どのような場合でも、Make はレシピのそれぞれの行を 別のシェル . これはレシピを一行で書くことで変更できます。

test all:
    export PATH=bin:$$PATH; echo $$PATH; x