shell 使用$PWD在makefile中获取父目录的基名

l5tcr1uw  于 2023-08-07  发布在  Shell
关注(0)|答案(2)|浏览(134)

我需要在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。我做的有什么不对吗?如果是的话,我想得到一些关于如何正确操作的建议。

  • 谢谢-谢谢
quhf5bfb

quhf5bfb1#

这是因为$对Make有特殊的含义,所以如果你想把它传递给shell,你必须“转义”它。在Make的情况下,您通过加倍来逃避美元符号。所以你必须使用$$PWD
此外,您正在做的并不是最好的方法-如果可能的话,最好避免使用shell并使用Make功能。在你的情况下,做你想做的事情的最好方法是:

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

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

u4dcyp6a

u4dcyp6a2#

我想到了这个
第一个月
如果执行此命令,您将获得:
ENVIRONMENT=projectname

相关问题