结构简洁、条理清晰的代码结构,是一个项目便于管理,代码模块化的前提。
梳理代码结构发现代码所使用的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)
转自:https://blog.csdn.net/as929015918/article/details/78885094