【问题标题】:Using Make's 'wildcard' function in Android.mk在 Android.mk 中使用 Make 的“通配符”功能
【发布时间】:2012-01-11 03:51:26
【问题描述】:

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

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

CFILES := $(wildcard *.c)

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

LOCAL_SRC_FILES := $(wildcard *.c)

但是,这与根本不包含任何文件具有相同的效果。

如果我手动包含文件,则构建将按预期工作。

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

【问题讨论】:

  • 尝试指定VPATH
  • @BrianCain 像这样:VPATH := $(call my-dir)?这似乎没有解决它。

标签: android c makefile android-ndk


【解决方案1】:

这是我过去使用的方法:

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文件的目录路径。

【讨论】:

  • 哇...谢谢。这正是我所需要的。我已经编写了一个 shell 脚本来动态生成 .mk,因为我厌倦了使用它。但这正是我所需要的。干杯。
【解决方案2】:

如果你对“这个目录”的定义是“包含这个makefile的目录”,那么

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

应该可以工作。

(警告:我不知道来自 Android)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多