结构简洁、条理清晰的代码结构,是一个项目便于管理,代码模块化的前提。
梳理代码结构发现代码所使用的android.mk各种各样,混乱不堪,遂整理出一个基础模板,供大家使用。其中包含了常见的一些功能,还有头文件路径遍历和源文件指定目录遍历等。

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
PROJECT_PATH = $(LOCAL_PATH)/..LOCAL_MODULE    := libmodule
LOCAL_LDFLAGS += -shared#添加模块使用宏定义
LOCAL_CFLAGS += -DMODULE_FLAG#添加需要包含的头文件路径,会依次遍历向下所有目录,
MY_HEADER_PATH += $(PROJECT_PATH)#添加需要包含的头文件路径,不会向下遍历,最后一个不要加\号
LOCAL_C_INCLUDES += $(PROJECT_PATH)../includeLOCAL_C_INCLUDES += $(shell find $(MY_HEADER_PATH) -type d)
$(warning "$(LOCAL_MODULE): LOCAL_C_INCLUDES =$(LOCAL_C_INCLUDES)")   # 扫描目录下的所有源文件,会向下依次遍历
MY_FILES_PATH  := $(PROJECT_PATH)
# 添加指定C/CPP文件,只添加某个
LOCAL_SRC_FILES += $(LOCAL_PATH)/test.cMY_FILES_SUFFIX := %.cpp %.c %.cc
My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f) )
My_All_Files := $(My_All_Files:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%)
MY_SRC_LIST  := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
MY_SRC_LIST  := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
LOCAL_SRC_FILES += $(MY_SRC_LIST)
$(warning "$(LOCAL_MODULE): LOCAL_SRC_FILES =$(LOCAL_SRC_FILES)")   #添加需要链接的静态库
LOCAL_STATIC_LIBRARIES  := #添加需要链接的动态库
LOCAL_SHARED_LIBRARIES  :=
$(warning "$(LOCAL_MODULE): LOCAL_SHARED_LIBRARIES=$(LOCAL_SHARED_LIBRARIES)") #添加需要链接的系统库,如ndk编译,需要链接的log/android等
LOCAL_LDLIBS    += -llog -landroid -lc#指定编译目标,这边编译动态库
include $(BUILD_SHARED_LIBRARY)

终极Android.mk模板,遍历头文件和源文件目录相关推荐

  1. C++类模板怎么写在单独的头文件和源文件中

    今天打算研究研究之前我们领导写的一段关于类模板的代码,后来发现有点坑需要记录一下.以往关于C++模板基本上都是写一个demo,然后运行通过,没有软件工程的样子,所以今天我按以往的惯例写了一个类模板,打 ...

  2. android开发模板web,Android开发实践:Android.mk模板

    关于Android NDK开发的文章已经比较多了,我的博客中也分享了很多NDK开发相关经验和技巧,今天简单写了一个 Android.mk 的示例模板,供初学者参考. 本模板主要给大家示例 Androi ...

  3. 乐鑫ESP32-C3开发(四)添加头文件和源文件

    ESP32-C3 1. 工程分析 2. 源码CMakeList.txt 3. 添加头文件和源文件 4. 其他 1. 工程分析 组织工程目录,代码要解构,模块化,可复用,避免重复劳动,遵循一定的命名规则 ...

  4. C++ 头文件和源文件

    from:https://www.cnblogs.com/fenghuan/p/4794514.html C++中头文件(.h)和源文件(.cpp)都应该写些什么 头文件(.h): 写类的声明(包括类 ...

  5. C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用

    1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...

  6. c 中头文件和源文件的区别是什么

    区别:头文件是".h"文件,提供接口:源文件是".cpp"文件,提供实现.编译器规定源文件必须包含函数入口,即main函数:而头文件不得包含函数入口,头文件不可 ...

  7. C++头文件和源文件,编译过程

    源文件如何根据#include来关联头文件  1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来, ...

  8. C++头文件和源文件的编译过程

    源文件如何根据#include来关联头文件 1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来,编 ...

  9. C语言头文件和源文件差异,#include两种引用方式差异

    一些初学c语言的人,不知道头文件(*.h文件)原来还可以自己写的.只知道调用系统库函数时,要使用#include语句将某些头文件包含进去.其实,头文件跟.c文件一样,是可以自己写的.头文件是一种文本文 ...

最新文章

  1. 学习事务,视图和索引
  2. python之turtle库(画图)
  3. linux 高性能读书笔记之通用socket地址
  4. AAAI2021 大运动“视频超分辨”中的对偶子网与多阶通信上采样方案
  5. linux查看 mysql 登陆 失败_Linux安装完mysql后提示错误无法登陆mysql怎么办?
  6. Netty : java.io.IOException: Connection reset by peer
  7. Bailian4077 出栈序列统计【卡特兰数】(vijos P1122)
  8. Ubuntu之sshfs远程目录挂载到本地
  9. TMG自动发现功能配置正常,但客户端却检测不到TMG服务器。
  10. fluent 对电机油冷分析_如何避免发电机过热引起的能源损耗?
  11. html生成pdf java_java 中实现HTML 生成pdf
  12. 惠普HP Photosmart C4200 打印机驱动
  13. 车辆违章查询接口文档
  14. 直播美颜SDK从技术层面如何自行实现
  15. 专转本-数学考试大纲
  16. 使用SDNN (space displacement neural network)进行多字体手写识别
  17. maven plugins飘红
  18. Java的图书商城项目如何添加商品到购物车
  19. 朋友找工作的奇葩规定
  20. AI Studio 课程

热门文章

  1. input,textarea元素设置宽度100%超出父元素宽度
  2. Keil调试程序如何查看变量
  3. IT项目管理之沉没成本
  4. C语言初步-第24讲:if语句的嵌套(个人所得税计算器if语句版)
  5. 哪里有便宜的云服务器?可以下月付款吗?
  6. JVM宕机问题排查,产生hs_err_pidpid.log与replay_pidpid.log日志
  7. 三点定位法(原理及实现)
  8. 光伏太阳能直流浪涌保护器应用方案
  9. 面试谈身价,一定要看这七条!
  10. 2022.10.17 英语背诵