my-dir

my-dir 返回当前makefile所在目录,这个宏返回最后包括的 makefile 的路径,通常是当前 Android.mk 的目录。

my-dir 可用于在 Android.mk 文件开头定义 LOCAL_PATH。例如:

LOCAL_PATH := $(call my-dir)

由于 GNU Make 的工作方式,这个宏实际返回的是构建系统解析构建脚本时包含的最后一个 makefile 的路径。因此,包括其他文件后就不应调用 my-dir

例如:

LOCAL_PATH := $(call my-dir)

# ... declare one module

include $(LOCAL_PATH)/foo/Android.mk

LOCAL_PATH := $(call my-dir)

# ... declare another module

这里的问题在于,对 my-dir 的第二次调用将 LOCAL_PATH 定义为 $PATH/foo,而不是 $PATH,因为这是其最近的 include 所指向的位置。

Android.mk 文件中的任何其他内容后指定额外的 include 可避免此问题。例如:

LOCAL_PATH := $(call my-dir)

# ... declare one module

LOCAL_PATH := $(call my-dir)

# ... declare another module

# extra includes at the end of the Android.mk file
include $(LOCAL_PATH)/foo/Android.mk

如果以这种方式构造文件不可行,请将第一个 my-dir 调用的值保存到另一个变量中。例如:

MY_LOCAL_PATH := $(call my-dir)

LOCAL_PATH := $(MY_LOCAL_PATH)

# ... declare one module

include $(LOCAL_PATH)/foo/Android.mk

LOCAL_PATH := $(MY_LOCAL_PATH)

# ... declare another module
赞(1)
未经允许不得转载:极客笔记 » my-dir
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

Android.mk之函数宏