终极Android.mk模板,遍历头文件和源文件目录
来源:互联网 发布:淘宝卖家id 编辑:程序博客网 时间:2024/06/05 15:17
结构简洁、条理清晰的代码结构,是一个项目便于管理,代码模块化的前提。
梳理代码结构发现代码所使用的android.mk各种各样,混乱不堪,遂整理出一个基础模板,供大家使用。其中包含了常见的一些功能,还有头文件路径遍历和源文件指定目录遍历等。
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)PROJECT_PATH = $(LOCAL_PATH)/..LOCAL_MODULE := libmoduleLOCAL_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 %.ccMy_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)
阅读全文