2013-08-30 29 views
0

在我的Makefile中,我知道目錄的路徑,並且需要回滾目錄。在makefile中,如何用../../../替換目錄aaa/bbb/ccc/

這裏是我的工作情況: 我寫了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.mk實現),這將將$(LOCAL_PATH)/tmp/mymod.ko複製到目標(由prebuid.mk添加的$(LOCAL_PATH)),但是我想將mymod.ko定位到/ tmp,所以我必須添加一些../ ../../到我的LOCAL_SRC_FILES,我可以刪除$(LOCAL_PATH)。

也就是說,我需要更換$(LOCAL_PATH)一些../../ ..

回答

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無論如何不能處理這些。

+0

非常感謝,它的工作原理! – Yingchun