gpt4 book ai didi

shell - 在makefile中获取父目录的基本名称

转载 作者:行者123 更新时间:2023-12-04 14:30:35 31 4
gpt4 key购买 nike

我需要在我的 Makefile 中自动进行变量对齐。我的 Makefile 的完整文件路径是:

/home/e2/branchname/projectname/modulename/Makefile

在我的 Makefile 中,我有一个变量 BUILD_DIR ,其中一部分应该等于 branchname在完整路径中。

所以我这样做了:
BRANCH_NAME= $(shell cd ../.. && basename "$PWD" && cd projectname/modulename)
BUILD_DIR=$(HOME)/$(BRANCH_NAME)/build

显然我期望 BUILD_DIR成为 ~/branchname/build在这里,但在 make 之后我收到了 ~/WD/build反而。我认为很可能是我弄错了 BRANCH_NAME .我做的有什么问题吗?如果是的话,我想得到一些关于如何正确做的建议。

谢谢。

最佳答案

因为$ Make 有一个特殊的含义,所以如果你想把它传递给 shell,你必须“逃避”它。在 Make 的情况下,您可以通过加倍来逃避美元符号。所以你必须使用 $$PWD .

此外,您正在做的并不是最好的方法 - 如果可能,最好避免使用 shell 并使用 Make 功能。在你的情况下,做你想做的最好的方法是这样的:

BUILD_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))/../../build)

你必须把上面这行放在有问题的 makefile 中,靠近顶部,这样它就在你之前 include任何其他生成文件。

关于shell - 在makefile中获取父目录的基本名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35030305/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com