您的位置:首页 > 移动开发 > Android开发

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

2017-12-24 14:58 489 查看
结构简洁、条理清晰的代码结构,是一个项目便于管理,代码模块化的前提。

梳理代码结构发现代码所使用的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)../include

LOCAL_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.c

MY_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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息