android.mk文件
来源:互联网 发布:强力卸载软件 编辑:程序博客网 时间:2024/06/05 13:31
一、Android.mk说明:
Android.mk是Android提供的一种makefile文件。 Android.mk将是GNU Makefile的一部分,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。
二、示例代码
在cocos2dx中为Android打包时,需要编写Android.mk文件,代码如下:
# Android.mk必须首先定义LOCAL_PATH变量,用于查找源文件。宏函数'my-dir'由编译系统提供,# 返回当前路径(即包含Android.mk文件的目录)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)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/extensions)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos/editor-support)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos/editor-support/cocostudio)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos/editor-support/spine)$(call import-add-path,$(LOCAL_PATH)/../../modules)# 这个模块的名字,它必须是唯一的,而且不能包含空格 ,由此变量名决定最终生成的目标文件名。 LOCAL_MODULE := cocos2dcpp_shared# 设置模块的二进制文件的名称,独立于LOCAL_MODULE (在libs/armeabi下生成libMyGame.so文件),# 即允许用户重新定义最终生成的目标文件名。 LOCAL_MODULE_FILENAME := libcocos2dcpp#遍历目录和子目录 define walk $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e))) endef #遍历路径Classes下得目录和子目录文件,并存入ALLFILES变量中 ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes) #从ALLFILES目录中提取文件,并存入FILE_LIST中 #.cc是Linux/Unix下为C++源文件的默认扩展名,与.cpp一个意思 #.c 因为我要用到sqlite3.c FILE_LIST := hellocpp/main.cpp FILE_LIST += $(filter %.cpp, $(ALLFILES)) FILE_LIST += $(filter %.c, $(ALLFILES)) FILE_LIST += $(filter %.cc, $(ALLFILES))#搜索Classes下的子目录文件 FILE_INCLUDES += $(shell find $(LOCAL_PATH)/../../Classes -type d) #根据搜索到的文件名 编译资源文件 LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)# 可选变量,表示头文件的搜索路径LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \ $(LOCAL_PATH)/../../cocos2d \ $(LOCAL_PATH)/../../cocos2d/cocos \ $(LOCAL_PATH)/../../cocos2d/cocos/audio/include \ $(LOCAL_PATH)/../../cocos2d/cocos/editor-support \ $(LOCAL_PATH)/../../cocos2d/cocos/editor-support/cocostudio \ $(LOCAL_PATH)/../../cocos2d/cocos/editor-support/spine \ $(LOCAL_PATH)/../../cocos2d/extensions \ $(LOCAL_PATH)/../../cocos2d/external \ $(LOCAL_PATH)/../../cocos2d/external/chipmunk/include/chipmunk \# 加入静态库,加了LOCAL_WHOLE_STATIC_LIBRARIES代表编译器会将静态库完整链接而不会进行删减优化 LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_staticLOCAL_WHOLE_STATIC_LIBRARIES += spine_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_ui_staticLOCAL_WHOLE_STATIC_LIBRARIES += protobuf_staticLOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static#添加友盟库LOCAL_SHARED_LIBRARIES := mobclickcpp_sharedinclude $(BUILD_SHARED_LIBRARY)# 在Android.mk中引用模块 ,添加导入库(基于import-add-path添加的导入库目录) $(call import-module,.)$(call import-module,audio/android)$(call import-module,extensions)$(call import-module,editor-support/spine)$(call import-module,editor-support/cocostudio)$(call import-module,network)$(call import-module,protobuf)$(call import-module,external/chipmunk)#导入友盟模块$(call import-module,libmobclickcpp)
三、补充说明
CLEAR_VARS
CLEAR_VARS由编译系统提供(在ndk下的build/core/clear-vars.mk),它可以让GNU MAKEFILE为你清除许多LOCAL_XXX变量
(例如:LOCAL_MODULE 、LOCAL_SRC_FILES等 ),但是 LOCAL_PATH 除外。 因为所有的编译控制文件都在同一个GNU MAKE
执行环境中,即所有的变量都是全局的,所以需要清理。
BUILD_SHARED_LIBRARY
指向编译脚本,根据所有的在 LOCAL_XXX 变量把列出的源代码文件编译成一个共享库。它负责收集自从上次调用 include $(CLEAR_VARS) 后的所有LOCAL_XXX信息。并决定编译为什么。编译成静态库.a文件, 静态库不能够加入到Project 或者APK中。
import-module
import-module用于导入外部的库,外部模块提供的.mk。import-module的路径是.mk文件所在目录。比如:
$(call import-module,extensions),则在cocos2d\extensions文件夹下有Android.mk文件
阅读全文
0 0
- Android.mk 文件,多个mk文件
- Android.mk文件分析
- android.mk文件分析
- Android MK文件写法
- android.mk文件介绍
- Android.mk文件分析
- Android.mk文件
- Android.mk文件详解
- Android.mk文件
- Android mk文件介绍
- Android.mk文件介绍
- Android.mk文件
- Android.mk文件分析
- Android.mk文件分析
- Android.mk文件
- 有关android mk文件
- Android.mk文件
- Android.mk文件分析
- Cheerleaders UVA
- 第一天的探索
- Python 2.7.x 和 3.x 版本的重要区别小结
- log4j与slf4j共存
- 【Unity学习笔记】——使用unity自带寻路系统进行寻路
- android.mk文件
- Linux中文件的压缩与解压缩
- Spring4.3x教程之三AOP详解
- chatterbot初步使用
- JuniperSRX---------rpm配合track完成双线主备
- bzoj 1483: [HNOI2009]梦幻布丁 线段树合并
- oracle做了update的误操作,怎么恢复之前数据
- 剑指offer刷题记录2
- 计算经纬度距离