在makefile中,如何将目录替换为aaa / bbb / ccc / with ../../../

时间:2013-08-30 03:36:18

标签: makefile

在我的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)替换成某些../../..

1 个答案:

答案 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无论如何都无法很好地处理这些空间。