Android.mk添加大量.cpp 免除麻烦,只需添加

LOCAL_PATH := $(call my-dir)


include $(CLEAR_VARS)


$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)


LOCAL_MODULE := cocos2dcpp_shared
LOCAL_CFLAGS += -DCOCOS2D_DEBUG=1


LOCAL_MODULE_FILENAME := libcocos2dcpp


#注释掉----------------------------------------------------------------------------------------------------------
# 遍历目录及子目录的函数
define walk
    $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef


# 遍历Classes目录
ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)
FILE_LIST := hellocpp/main.cpp




# 从所有文件中提取出所有.cpp文件
FILE_LIST += $(filter %.c, $(ALLFILES))
FILE_LIST += $(filter %.cpp, $(ALLFILES))
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)




FILE_INCLUDES := $(shell find $(LOCAL_PATH)/../../Classes -type d)      
LOCAL_C_INCLUDES := $(FILE_INCLUDES)
#注释掉----------------------------------------------------------------------------------------------------------




#添加---------------------------------------------------------------------------------------------------------------------------------------------------------------这个正确添加大量源文件
#使用纯净的makefile语法重新编写了脚本Update: Android.mk 中的 LOCAL_SRC_FILES, LOCAL_C_INCLUDES
# 配置自己的源文件目录和源文件后缀名
MY_FILES_PATH  :=  $(LOCAL_PATH) \
                   $(LOCAL_PATH)/../../Classes


MY_FILES_SUFFIX := %.cpp %.c


# 递归遍历目录下的所有的文件
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_C_INCLUDES += $(LOCAL_PATH)/../../cocos2d/external/iconv/include  \
$(LOCAL_PATH)/../../cocos2d/external/iconv/libcharset \
$(LOCAL_PATH)/../../cocos2d/external/iconv/lib \
$(LOCAL_PATH)/../../cocos2d/external/iconv/libcharset/include \
$(LOCAL_PATH)/../../cocos2d/external/iconv/srclib \
$(LOCAL_PATH)/../../cocos2d/external/iconv
#添加----------------------------------------------------------------------------------------------------------




LOCAL_STATIC_LIBRARIES := cocos2dx_static


#添加----------------------------------------------------------------------------------------------------------
#//LOCAL_WHOLE_STATIC_LIBRARIES += iconv
#//这儿的iconv是在iconv目录下的android.mk中的LOCAL_MOUDEL对应的值,默认就是iconv
#//本人之前在网上找的资源都是写的iconv_static,然后每次编译到最后生成SO文件出错.
#//试了很多次多种配置都不行.最后就报找不到lib iconv_open,iconv_close方法.
#//原因就是这个静态库名称不对.照本宣科不知道原理吃了亏.
#添加iconv静态库
LOCAL_WHOLE_STATIC_LIBRARIES += iconv
#添加----------------------------------------------------------------------------------------------------------




include $(BUILD_SHARED_LIBRARY)


$(call import-module,.)


#添加----------------------------------------------------------------------------------------------------------
#//引用iconv的android.mk文件进行编译
#$(call import-module,iconv)
#添加----------------------------------------------------------------------------------------------------------






LOCAL_PATH := $(call my-dir)


include $(CLEAR_VARS)
LOCAL_MODULE := cocos_curl_static
LOCAL_MODULE_FILENAME := curl
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcurl.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../cocos2d/external/curl/include/android
LOCAL_STATIC_LIBRARIES += cocos_ssl_static
LOCAL_STATIC_LIBRARIES += cocos_crypto_static
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)


LOCAL_MODULE := cocos_crypto_static
LOCAL_MODULE_FILENAME := crypto
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcrypto.a
include $(PREBUILT_STATIC_LIBRARY)


LOCAL_MODULE := cocos_ssl_static
LOCAL_MODULE_FILENAME := ssl
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libssl.a
include $(PREBUILT_STATIC_LIBRARY)

















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您想将一个子模块添加到您的Android应用程序项目中,可以使用以下步骤: 1. 在您的Android项目根目录中创建一个名为“libs”的文件夹(如果它不存在)。 2. 将子模块作为子目录复制到“libs”目录中。 3. 在您的Android项目根目录中创建一个名为“Android.mk”的文件(如果它不存在)。 4. 打开“Android.mk”文件并添加以下代码: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := my_module_name LOCAL_SRC_FILES := libs/submodule_folder_name/child_module_name.c LOCAL_C_INCLUDES := $(LOCAL_PATH)/libs/submodule_folder_name/include_folder_name include $(BUILD_SHARED_LIBRARY) ``` 其中,“my_module_name”是您的模块名称,您要将其替换为适合您的名称。同样,“submodule_folder_name”是子模块的名称,您要将其替换为适合您的名称。最后,“child_module_name.c”是子模块的源代码文件名,您要将其替换为适合您的名称。如果您有多个源文件,请将它们以空格分隔列出。 5. 保存“Android.mk”文件并关闭它。 6. 打开您的应用程序的“build.gradle”文件并添加以下代码: ``` android { ... sourceSets { main { jni.srcDirs = [] jniLibs.srcDirs = ['libs'] } } ... } ``` 7. 在“Android Studio”中,单击“Sync Project with Gradle Files”按钮以同步您的项目。 现在,您已经成功将子模块添加到您的Android应用程序项目中。您可以像使用任何其他本地模块一样使用它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值