首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要更好地理解Andorid.mk

需要更好地理解Andorid.mk
EN

Stack Overflow用户
提问于 2015-03-12 07:42:01
回答 1查看 101关注 0票数 1

我已经阅读了所有的Android.mk简介,并在这个论坛上回顾了许多关于它的文章。我仍然不知道如何把它应用到我想要做的事情上。我只是试图访问本机库文件,其中一些文件位于我的JNI目录下的几个级别。我所做的就是在我的JNI目录中放置一个符号链接到我的源代码,名为tbd,并在我的Android.mk中放置以下行

代码语言:javascript
复制
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文件中调用一个函数,该函数位于我的jni文件夹的两个级别之下,我得到消息“文件未找到”。我看到一篇文章,其中有人建议如下:

代码语言:javascript
复制
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中的每个目录执行此操作?必须有更有效的方法来做到这一点。

有人建议..。

代码语言:javascript
复制
LOCAL_SRC_FILES += $(patsubst $(LOCAL_PATH)/%, %, $(wildcard folder/**/*.cpp))

我甚至听不懂这句话:-(%在这行做什么?)有人能解释一下这条命令是干什么的吗?

@alijandro;谢谢。所以我要知道的是我有多少层的目录结构。嘿,你知道静态库还是共享库吗?Android.mk文档说:“BUILD_SHARED_LIBRARY是构建系统提供的一个变量,它指向GNU脚本,该脚本负责收集自最新的'include $(CLEAR_VARS)‘以来在LOCAL_XXX变量中定义的所有信息,并决定构建什么以及如何准确地构建。”所以我不知道它是怎么做的,或者它意味着什么。它是否会对提到的源文件进行递归搜索??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-12 08:40:04

代码语言:javascript
复制
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)/%=%)

上面的语句将获得三个子目录中最大限度的.cpp文件列表。它使用makefile内置函数进行文件名操作wildcard

代码语言:javascript
复制
LOCAL_SRC_FILES += $(patsubst $(LOCAL_PATH)/%, %, $(wildcard folder/**/*.cpp))

类似地,上面的语句使用内置函数模式替代$(patsubst pattern,replacement,text),这意味着在text中查找pattern并将它们替换为replacement。模式%表示makefile中的任何字符。

有关makefile的更多信息,可以参考这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29004264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档