这是对这个问题的跟进:我可以使用 GNU make 的 SHELL 变量连接到远程 shell 吗?
我想在一个食谱中使用两种不同的贝壳。一个 shell 在主机上,另一个在没有 make 的目标设备上。主机上的 shell 用于跟踪测试的成功和失败。目标设备上的外壳用于执行测试。我已成功使用 $(eval SHELL=) 从主机 shell 更改为目标 shell。但是,当我在配方中添加 $(eval SHELL=) 时,似乎 SHELL 永远不会改变。我假设在运行配方之前评估了两个 eval 函数,因此第二个扩展取消了第一个扩展。有没有办法让这些 eval 函数在运行时扩展,或者在一个配方中更改 SHELL 变量两次?
为了说明我的目标,它将是这样的:
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-internal 变量,它决定了调用哪个 shell make 以执行配方步骤,而不是环境变量。