0

私の 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) を ../../.. に置き換える必要があります。

4

1 に答える 1

0

次のようなことを試すことができます:

empty   :=
spaces  := $(empty) $(empty)
to-root  = $(subst $(space),/,$(patsubst %,..,$(subst /,$(space),$1)))

# Test
$(info aaa/bbb/ccc -> $(call to-root,aaa/bbb/ccc))

パス コンポーネントの 1 つにスペースが含まれている場合、これは壊れますが、makeとにかくそれらをうまく処理できません。

于 2013-09-02T07:55:49.780 に答える