我需要在我的 Makefile 中自动进行变量对齐。我的 Makefile 的完整文件路径是:
/home/e2/branchname/projectname/modulename/Makefile
Run Code Online (Sandbox Code Playgroud)
在我的 Makefile 中,我有一个变量BUILD_DIR
,其中一部分应等于branchname
完整路径中的 。
所以我这样做了:
BRANCH_NAME= $(shell cd ../.. && basename "$PWD" && cd projectname/modulename)
BUILD_DIR=$(HOME)/$(BRANCH_NAME)/build
Run Code Online (Sandbox Code Playgroud)
显然我预计BUILD_DIR
会~/branchname/build
在这里,但make
我到了之后~/WD/build
。我想很有可能是我搞错了BRANCH_NAME
。难道我的做法有问题吗?如果是的话,我想得到一些关于如何正确做的建议。
谢谢。
这是因为$
Make 有特殊的含义,所以如果你想将它传递给 shell,你必须“转义”它。对于 Make,您可以通过加倍来避开美元符号。所以你必须使用$$PWD
.
另外,您所做的并不是真正的最佳方法 - 最好避免使用 shell 并尽可能使用 Make 功能。就您而言,执行您想要的操作的最佳方法是:
BUILD_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))/../../build)
Run Code Online (Sandbox Code Playgroud)
您必须将以上行放在有问题的 makefile 中靠近顶部的位置,以便它位于include
任何其他 makefile 之前。
归档时间: |
|
查看次数: |
16007 次 |
最近记录: |