Android.mk遍历子目录所有文件
转:http://blog.csdn.net/langresser_king/article/details/8272736
define all-cpp-files-under
$(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find $(1) -name "*.cpp" -and -not -name ".*" -and -not -name "CCEditBoxImplWindow.cpp") \
)
endef
define all-subdir-cpp-files
$(call all-cpp-files-under,.)
endef
LOCAL_SRC_FILES := $(call all-subdir-cpp-files)
使用这个方法可以遍历子目录所有.cpp文件,替换find的参数可以实现遍历和过滤任意文件。
Android.mk编写变得非常简洁和方便,无需再维护文件列表了。
另附一个更加简单的宏,可以实现遍历一个目录下的所有文件(但是不会递归调用)
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/../*.c)
通过wildcard可以进行文件遍历,如果是单目录结构,通过这个同样可以达到非常简洁的效果。如果是c++代码的话(*.cpp文件),需要使用下面的方式,否则可能找不到文件:
FILE_LIST := $(wildcard $(LOCAL_PATH)/../*.cpp)
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
加强版本(遍历所有文件,但是忽略某一个目录的文件)
define all-cpp-files-under
$(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find $(1) -name LogicLayer -prune -o -name "*.cpp" -and -not -name ".*") \
)
endef
通过-prune可以指定忽略 "LogicLayer"这个目录
Android.mk遍历子目录所有文件的更多相关文章
- Android.mk 文件语法详解
0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build Syst ...
- Android.mk 文件语法详解 转:http://blog.sina.com.cn/s/blog_602f8770010148ce.html
0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build Syst ...
- Android JNI的Android.mk文件语法详解
Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build System解 ...
- Android编译系统(Android.mk文件详解)
[Android-NDK(Native Development Kit) docs文档] NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成a ...
- android.mk android源码编译
http://www.cnblogs.com/chenbin7/archive/2013/01/05/2846863.html Android.mk简单分析 2013-01-05 22:51 by . ...
- Android.mk
Introduction: Android.mk编译文件是用来向Android NDK描述你的C,C++源代码文件的, 这篇文档描述了它的语法.在阅读下面的内容之前,假定你已经阅读了docs/OVER ...
- 【整理修订】Android.mk详解
Android.mk详解 1. Android.mk 的应用范围 Android.mk文件是GNU Makefile的一小部分,它用来对Android程序进行编译. 一个Android.mk文件可以编 ...
- Android.mk简介<转>
文章参照:http://blog.sina.com.cn/s/blog_67d8d7060100q8un.html Android.mk文件是GNU Makefile的一小部分,它用来对Android ...
- Android.mk简介
http://www.cnblogs.com/hnrainll/archive/2012/12/18/2822711.html Android.mk文件是GNU Makefile的一小部分,它用来对A ...
随机推荐
- 如何从windows中拷贝文件到linux (ubuntu)??
安装ssh,然后用客户端似的界面远程手动拖动即可.
- linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体[转]
linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体 1.引用头文件#include<dirent.h> struct ...
- Oracle中INTERSECT,MINUS,UNION,UNION ALL用法
intersect 就是交集minus 就是差集 交集就是两个结果集中都有的元素 比如 select uid from tb1 intersect select uid from tb2 那么既存在t ...
- HDU 3657 Game (SAP | Dinic | EK 三种算法的比较)
Game Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- php-fpm进程关闭与重启脚本详解
先来理解一下什么是php-fpm PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的. PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中.必须将 ...
- Android中Is library配置的作用
在Android开发中如果用eclipse开发的话,在配置的时候会有一个选项,Is library一直没有研究明白,经过上网查找,有人归纳了用法,归纳的很好作为保留.解决了我多个项目共享资源的好方法. ...
- 一个将java事物的非常好的栗子
地址:http://www.cnblogs.com/davenkin/archive/2013/02/16/java-tranaction-1.html
- Appium 设置手机连接方式
使用appium的 Connection 和driver 的setConnection方法,可以切换手机的上网方式 // 切换到wifi Connection cnn = Connection.WIF ...
- django 模板语言入门详解
django 模板语言所解决的问题域: 1.动态生成html文件 2.是上这个模板语言用可用于生成任何形式的文本文件 从一个不用模板语言生成html的例子看模板语言的优点: 假设我要生成一个 “hel ...
- 微信小程序如何获取屏幕宽度
微信小程序如何获取屏幕宽度 方法1: imageLoad: function () { this.setData({ imageWidth: wx.getSystemInfoSync().window ...