在我的Makefile中,我知道目录的路径,需要回滚目录。
这是我的工作案例: 我正在编写Android makefile,以下是一些代码:
LOCAL_PATH :=$(call my-dir) #this will get the path that Android.mk locate.
...
LOCAL_MODULE := mymod
LOCAL_SRC_FILES := /tmp/mymod.ko
include $(BUILD_PREBUILT)
.....
根据Android prebuild系统(在build / core / prebuild.mk中实现),这会将$(LOCAL_PATH)/tmp/mymod.ko复制到目标(prebuid.mk添加的$(LOCAL_PATH)),但是我想找到mymod.ko只是为了/ tmp,所以我必须在我的LOCAL_SRC_FILES中添加一些../../../,我可以删除$(LOCAL_PATH)。
也就是说,我需要将$(LOCAL_PATH)替换成某些../../..
答案 0 :(得分:0)
您可以尝试这样的事情:
empty :=
spaces := $(empty) $(empty)
to-root = $(subst $(space),/,$(patsubst %,..,$(subst /,$(space),$1)))
# Test
$(info aaa/bbb/ccc -> $(call to-root,aaa/bbb/ccc))
如果其中一个路径组件包含空格,则会中断,但make
无论如何都无法很好地处理这些空间。