为 Make 任务的持续时间添加环境变量

jos*_*osh 9 make environment-variables

我正在使用 make 来处理我的应用程序的构建文件,而这些构建过程使用节点模块。由于我在本地安装这些节点模块,因此我必须在我的$PATH位置中指定调用可执行文件的位置,例如PATH=$(npm bin):$PATH.

我已经在我的 Makefile 中设置了一个变量NPMEXEC := PATH=$(shell npm bin):$$PATH,并在需要时将其添加到我的命令中。但是,对于一些较长的任务,例如在运行多个命令的测试期间,在任务的整个持续时间内进行 PATH 分配会很方便,有点像pushd/ popd。那可能吗?

Gil*_*il' 10

“任务”不是常见的制造术语。我假设你的意思是规则。如果您使用 GNU make,您可以为特定规则设置变量,或者更准确地说,为特定目标设置变量。

test-results: export PATH := $(shell npm bin):$$PATH
test-results: test-binary1 test-binary2 test-data2 reference-test-results
        test-binary1 >test-results
        test-binary2 test-data2 >>test-results
        diff test-results reference-test-results
Run Code Online (Sandbox Code Playgroud)

请注意,赋值是在 make 语法中进行的,这与 shell 语法不同。请注意,在修改变量时,您必须使用急切(“扩展”)赋值,而不是=会创建循环引用的惰性赋值。