当前位置: 首页 > 面试题库 >

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

陈哲
2023-03-14
问题内容

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


问题答案:

您是否尝试过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


 类似资料:
  • 问题内容: 我正在尝试从特定目录导入模块。 问题是,如果我使用附加路径然后打开python解释器,则该目录将添加到列表sys.path的末尾。如果我在打开python解释器之前导出变量,则目录将添加到列表的开头。在后一种情况下,我可以导入模块,而在前一种情况下,我不能。 有人可以解释为什么会发生这种情况,并给我一个 在 python脚本中将其添加到开始的解决方案吗? __ 问题答案: 如文档所述,

  • 我试图从一个特定的目录中导入一个模块。 问题是如果我使用<code>sys.path。append(moddirectory)要附加路径,然后打开python解释器,目录将添加到列表sys.path的末尾。如果我在打开python解释器之前导出变量,那么该目录将被添加到列表的开头。在后一种情况下,我可以导入模块,但在前一种情况中,我不能。 有人可以解释为什么会发生这种情况,并给我一个解决方案,在

  • 问题内容: 我设法下载了Eclipse Helios的svn插件。然后,我设法将一个新的存储库添加到我选择的驱动器中。但是我看不到如何知道已经创建的项目?有人可以告诉我我该怎么做。 谢谢 问题答案: 就像是: 右键单击您的项目。 选择团队->共享项目。 该向导将指导您进行初始导入。 实际上,Initial Import不会将任何代码放入项目存储库中,而只是将项目详细信息放入仓库中。因此,您需要执行

  • 在log4j1.2中,您只需在运行时获取一个记录器并添加一个appender。例如,这对于测试目的很方便。我们曾经创建一个模拟appender并将其添加到记录器中。随后,我们可以做出不同的断言。 log4j2的等价物是什么? 例如,这个例子展示了其他人是如何添加测试附加器的。 log4j2页面显示了一些关于如何添加附加器的示例。但是,它们将追加器添加到整个上下文中。这似乎不同于为一个特定的记录器添

  • 我有以下项目:https://github.com/glusk2/sprouts 我尝试将添加到根目录文件中的整个项目中,如下所示:

  • 将Git更新为我发现以下错误: 致命的:不安全的存储库('F:/GitHub/my-project'由其他人拥有) 要为该目录添加异常,请调用: git config--global--addsafe.directoryF:/GitHub/my-project 我已尝试将项目的父目录添加到,但它不起作用。 有解决办法吗 “x”是别人所有的,这到底是什么意思 我不想把我正在做的每个项目都添加到文件。