我想编写一个可以运行测试的 Makefile。测试在'./tests'目录下,要测试的可执行文件在'./bin'目录下。
当我运行测试时,他们看不到 exec 文件,因为目录 ./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
然后一切正常。
如何更改 Makefile 中的 $PATH?
最佳答案
您尝试了吗export
directive Make 本身(假设您使用 GNU Make)?
export PATH := bin:$(PATH)
test all:
x
另外,你的例子中有一个错误:
test all:
PATH=bin:${PATH}
@echo $(PATH)
x
首先,echo
ed 的值是由 Make 而不是 shell 执行的 PATH
变量的扩展。如果它打印出预期的值,那么我猜,您已经在 Makefile 中的某个位置或调用 Make 的 shell 中设置了 PATH
变量。为了防止这种行为,你应该逃避美元:
test all:
PATH=bin:$$PATH
@echo $$PATH
x
其次,无论如何这都行不通,因为 Make 在 separate shell 中执行配方的每一行。 .这可以通过在一行中编写配方来更改:
test all:
export PATH=bin:$$PATH; echo $$PATH; x
关于linux - 如何在 Makefile 中将 dir 添加到 $PATH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8941110/