我已经阅读了所有的 Android.mk 介绍,并在这个论坛上查看了一些关于它的帖子。而且仍然不确定如何将其应用于我正在尝试做的事情。我只是想访问本机库文件,其中一些位于我的 JNI 目录下的几个级别。我所做的是在我的 JNI 目录中放置一个符号链接到我的源,称为 tbd,并将以下行放入我的 Android.mk
LOCAL_PATH := $(call my-dir)
include $(call all-subdir-makefiles)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloJNI
LOCAL_C_INCLUDES += $(LOCAL_PATH)/tbd
LOCAL_SRC_FILES := HelloJNI.c manifest.c
LOCAL_STATIC_LIBRARIES := \
libtbd_service \
libtbd_common \
libc
我不知道如何查看 tbd 目录中的某些文件。我正在尝试在 libc direcoty 中的文件中调用一个函数,该文件位于我的 jni 文件夹下的几个级别,我收到消息“找不到文件”。我看到一个帖子,其中有人提出以下建议:
FILE_LIST := $(wildcard $(LOCAL_PATH)/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/**/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/**/**/*.cpp)
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
这是否意味着我必须为/tbd中的每个目录执行此操作?必须有一种更有效的方法来做到这一点。
别人建议...
LOCAL_SRC_FILES += $(patsubst $(LOCAL_PATH)/%, %, $(wildcard folder/**/*.cpp))
我什至无法理解这一点:-( % 在这一行中做了什么?有人能解释一下这个命令在做什么吗?
@alijandro; 谢谢。所以我只需要找出我有多少级别的目录结构。嘿,您知道静态库或共享库吗?Android.mk 文档说“BUILD_SHARED_LIBRARY 是构建系统提供的一个变量,它指向一个 GNU Makefile 脚本,该脚本负责收集你在 LOCAL_XXX 变量中定义的所有信息,因为最新的‘include $(CLEAR_VARS)’并确定什么构建,以及如何准确地做到这一点。”所以我不知道它会如何做这一切或它意味着什么的细节。它可能会对提到的源文件进行递归搜索吗?