これは、この質問のフォローアップです。GNUmakeのSHELL変数を使用してリモートシェルに接続できますか?
1つのレシピで2つの異なるシェルを使用したいと思います。1つのシェルはホストマシン上にあり、もう1つはmakeを持たないターゲットデバイス上にあります。ホストマシンのシェルは、テストの成功と失敗を追跡するために使用されます。ターゲットデバイスのシェルは、テストの実行に使用されます。$(eval SHELL =)を使用して、ホストシェルからターゲットシェルに変更することに成功しました。ただし、レシピに$(eval SHELL =)を追加すると、SHELLは変更されないように見えます。レシピが実行される前に2つのeval関数が評価されると想定しているため、2番目の展開は最初の関数をキャンセルします。これらのeval関数を実行時に拡張する方法、または1つのレシピでSHELL変数を2回変更する方法はありますか?
私が目指していることを説明するために、次のようになります。
test: test_dependencies
touch $host_files_for_tracking
SHELL = target_shell
$(program_to_test) $(params) -o result
cmp result gold
SHELL = host_shell
rm $host_files_for_tracking
ありがとう。
注:SHELLについて話しているときは、環境変数ではなく、レシピステップを実行するためにどのシェルmakeが呼び出すかを決定するmake-internal変数を指します。