一尘不染

如何在Makefile中将目录添加到$ PATH?

linux

我想编写一个可以运行测试的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?


阅读 1826

收藏
2020-06-03

共1个答案

一尘不染

您是否尝试过Make本身的export指令(假设您使用GNU
Make)?

export PATH := bin:$(PATH)

test all:
    x

此外,您的示例中还有一个错误:

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

首先,echoed
的值是PATH由Make而不是shell执行的变量的扩展。我猜,如果它输出期望值,那么您已经PATH在Makefile或调用Make的shell中的较早位置设置了变量。为了防止这种行为,您应该避免美元:

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

其次,无论如何这都行不通,因为Make在单独的shell中执行配方的每一行。可以通过在单行中编写配方来更改此设置:

test all:
    export PATH=bin:$$PATH; echo $$PATH; x
2020-06-03