linux - 如何在 Makefile 中将 dir 添加到 $PATH?

标签 linux makefile

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

首先,echoed 的值是由 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/

相关文章:

linux - Gstreamer-sharp,构建 libgstreamersharpglue.so

linux - 测试目标文件是否独立于操作系统

java - 在 Mac 上安装 Jmagick-6.6.9 未生成 .dylib

linux - shell 脚本 'installer'

linux - 我想复制文件中的一行并进行一些更改

Linux/PERL : split a single line into multiple lines

c++ - 将 MinGW 与 Visual Studio 2010 集成(Makefile 项目)

c++ - 使用 Bash 在 Windows 10 上使用 Visual Studio 2015 构建 libvpx

linux - 自定义 bash 通配符扩展

linux - linux如何在文本文件中存储负数?