在Android.mk中使用Make的'通配符'功能

时间:2011-12-02 02:00:09

标签: android c makefile android-ndk

我在Android.mk构建文件中使用Make's wildcard function时出现问题。

我的其他makefile使用类似这样的行来指定“此文件夹中的所有.c文件”:

CFILES := $(wildcard *.c)

在我的Android.mk文件中,我尝试了这个:

LOCAL_SRC_FILES := $(wildcard *.c)

然而,这与不包括任何文件的情况具有相同的效果。

如果我手动包含文件,那么构建就像我期望的那样工作。

我想知道在评估此语句时,当前工作目录是否不是我的项目路径?如果是这样,我可以使用$(call my-dir)和通配符函数的组合来获取我想要的列表吗?

2 个答案:

答案 0 :(得分:22)

以下是我过去使用过的内容:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := mylibrary
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.c)
include $(BUILD_STATIC_LIBRARY)

'my-dir'是构建系统提供的一个宏,它返回包含Android.mk文件的目录路径。

答案 1 :(得分:2)

如果您对“此目录”的定义是“包含此makefile的目录”,那么

$(wildcard $(dir $(lastword $(MAKEFILE_LIST)))*.c)

应该工作。

(警告:我不知道Android)