我需要在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
。我做的有什么不对吗?如果是的话,我想得到一些关于如何正确操作的建议。
- 谢谢-谢谢
2条答案
按热度按时间quhf5bfb1#
这是因为
$
对Make有特殊的含义,所以如果你想把它传递给shell,你必须“转义”它。在Make的情况下,您通过加倍来逃避美元符号。所以你必须使用$$PWD
。此外,您正在做的并不是最好的方法-如果可能的话,最好避免使用shell并使用Make功能。在你的情况下,做你想做的事情的最好方法是:
字符串
你必须把上面的一行放在有问题的makefile中,靠近顶部,这样它就在你
include
任何其他makefile之前。u4dcyp6a2#
我想到了这个
第一个月
如果执行此命令,您将获得:
ENVIRONMENT=projectname
个