美文网首页
Android.mk 文件

Android.mk 文件

作者: that_is_this | 来源:发表于2018-03-27 17:26 被阅读15次

    1. 添加

    当要编译的文件目录文件较多是,需要包括全部的 .cpp/.c/.cc 文件,需添加以下命令:

    # 配置自己的源文件目录和源文件后缀名
    MY_FILES_PATH  :=  $(LOCAL_PATH) \
                       $(LOCAL_PATH)/../../Classes
    
    MY_FILES_SUFFIX := %.cpp %.c %.cc
    
    # 递归遍历目录下的所有的文件
    rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
    
    # 获取相应的源文件
    MY_ALL_FILES := $(foreach src_path,$(MY_FILES_PATH), $(call rwildcard,$(src_path),*.*) )
    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)/%=%)
    
    # 去除字串的重复单词
    define uniq =
      $(eval seen :=)
      $(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_)))
      ${seen}
    endef
    
    # 递归遍历获取所有目录
    MY_ALL_DIRS := $(dir $(foreach src_path,$(MY_FILES_PATH), $(call rwildcard,$(src_path),*/) ) )
    MY_ALL_DIRS := $(call uniq,$(MY_ALL_DIRS))
    
    # 赋值给NDK编译系统
    LOCAL_SRC_FILES  := $(MY_SRC_LIST)
    LOCAL_C_INCLUDES := $(MY_ALL_DIRS)
    

    2. Android.mk

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    LOCAL_MODULE    := dexload
    LOCAL_C_INCLUDES +=$(LOCAL_PATH)/MSHook/
    LOCAL_C_INCLUDES +=$(LOCAL_PATH)/MemDex/
    LOCAL_C_INCLUDES +=$(LOCAL_PATH)/JNIHelper/
    LOCAL_C_INCLUDES +=$(LOCAL_PATH)/core/
    
    # 配置自己的源文件目录和源文件后缀名
    MY_FILES_PATH  :=  $(LOCAL_PATH) \
                       $(LOCAL_PATH)/../../Classes
    
    MY_FILES_SUFFIX := %.cpp %.c %.cc
    
    # 递归遍历目录下的所有的文件
    rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
    
    # 获取相应的源文件
    MY_ALL_FILES := $(foreach src_path,$(MY_FILES_PATH), $(call rwildcard,$(src_path),*.*) )
    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)/%=%)
    
    # 去除字串的重复单词
    define uniq =
      $(eval seen :=)
      $(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_)))
      ${seen}
    endef
    
    # 递归遍历获取所有目录
    MY_ALL_DIRS := $(dir $(foreach src_path,$(MY_FILES_PATH), $(call rwildcard,$(src_path),*/) ) )
    MY_ALL_DIRS := $(call uniq,$(MY_ALL_DIRS))
    
    # 赋值给NDK编译系统
    LOCAL_SRC_FILES  := $(MY_SRC_LIST)
    LOCAL_C_INCLUDES := $(MY_ALL_DIRS)
    
    
    
    LOCAL_CFLAGS := -Wall
    # LOCAL_CFLAGS +=-fpermissive
    LOCAL_CFLAGS += -DNO_WINDOWS_BRAINDEATH -Werror-pointer-arith
    LOCAL_LDLIBS :=-llog -landroid
    include $(BUILD_SHARED_LIBRARY)
    
    

    3. Application.mk

    APP_ABI := armeabi armeabi-v7a x86
    APP_STL := gnustl_static
    APP_CPPFLAGS := -std=c++11 -fexceptions -frtti
    APP_PLATFORM := android-14
    # NDK_TOOLCHAIN_VERSION:=4.8
    
    

    相关文章

      网友评论

          本文标题:Android.mk 文件

          本文链接:https://www.haomeiwen.com/subject/wtpscftx.html