学习笔记 Android.mk 搜索自己主动

最近一直Android.mk这是什么一个令人沮丧的夜晚,点击此处记录。
ios你担心更多。不管那么多。xcode自己解决。

文本工具:MACVIM(文本编辑工具 很有用 你可以清楚地分辨tab 和Spaces,为了不写.mk错误)
件是向编译器描写叙述源码文件。便于它去解析。

下面是cocos2dx-3.2新建项目时生成的Android.mk文件

基本的语法:
“#” 凝视
“:=”  赋值
“+=”  追加
“$”    引用某变量的值
#宏函数my-dir返回编译系统提供的当前路径,即Android.mk的文件夹
#如(HelloWorld/proj.android/jni/XX)
LOCAL_PATH := $(call my-dir)

#初始化模块  重置除LOCAL_PATH变量以外的全部变量
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_MODULE_FILENAME := libcocos2dcpp?
#把.cpp .c .cc等实现文件的路径赋值给LOCAL_SRC_FILES
我用的是C++版  所以后缀是.cpp 我们新建文件时,须要在这里加入路径。
LOCAL_SRC_FILES := hellocpp/main.cpp                    ../../Classes/AppDelegate.cpp                    ../../Classes/HelloWorldScene.cpp
#配置头文件的搜索范围
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
#获取静态库
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
#追加静态库
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static

# LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
# LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static

#依据编译器提供的变量BUILD_SHARED_LIBRARY生成动态库
include $(BUILD_SHARED_LIBRARY)

#导入模块。下面是经常使用的几个模块

$(call import-module,.)
$(call import-module,audio/android)

# $(call import-module,Box2D)
# $(call import-module,editor-support/cocosbuilder)
# $(call import-module,editor-support/spine)
# $(call import-module,editor-support/cocostudio)
# $(call import-module,network)
# $(call import-module,extensions)

假设文件少  直接在LOCAL_SRC_FILES这个变量里加入文件的路径就好了

可惜我有几十个文件,一个个加入还不累死。并且难维护。难扩展,易出错。。。

我是个懒人,參考子龙山人的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)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp
#widcard为扩展通配符
#遍历文件夹和子文件夹
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 	$(FILE_INCLUDES) #静态库
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
#LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
#LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
#LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static

#编译动态库
include $(BUILD_SHARED_LIBRARY)

#导入静态库相应的模块
$(call import-module,.)
$(call import-module,audio/android)

#$(call import-module,Box2D)
#$(call import-module,editor-support/cocosbuilder)
#$(call import-module,editor-support/spine)
$(call import-module,editor-support/cocostudio)
$(call import-module,network)
$(call import-module,extensions)

吐槽:这些零碎的东西引擎应该通过软件的开发来解决,或。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-01 06:03:37

学习笔记 Android.mk 搜索自己主动的相关文章

学习笔记 Android.mk 自动搜索

最近被Android.mk这东西折腾的一晚,这里记录一下. ios就省心多了,不用管那么多,xcode自己解决了. 文本工具:MACVIM(文本编辑工具 非常好用 能清楚分清tab 和空格,以免编写.mk时出错) 这个文件是向编译器描述源代码文件,便于它去解析. 以下是cocos2dx-3.2新建项目时生成的Android.mk文件 基本语法: "#" 注释 ":="  赋值 "+="  追加 "$"    引用某变量的值 #

十七、Android学习笔记_Android 使用 搜索框

1.在资源文件夹下创建xml文件夹,并创建一个searchable.xml: android:searchSuggestAuthorityshux属性的值跟实现SearchRecentSuggestionsProvider类中的setupSuggestions方法的第一个参数相同.android:searchSuggestSelection 指搜索参数 <?xml version="1.0" encoding="utf-8"?> <searchab

android学习笔记--android启动过程之init.rc文件浅析

1.  init.rc文件结构文件位置:init.c  : /system/core/initinit.rc  : /system/core/rootdir 首先init.rc文件是以模块为单位的,每个模块里的内容都是一起执行的,模块分为3种类型:on.service.import.我们可以看下init.rc文件是怎么写的:1.import import /init.usb.rc import /init.${ro.hardware}.rc import /init.trace.rc 上面的内容

Mina框架的学习笔记——Android客户端的实现

Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架.当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发.串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中.目前正在使用 MINA 的软件包括有:Apache Directory Project.Asyn

Sharepoint2013搜索学习笔记之创建搜索服务(二)

第一步,进入管理中心,点击管理服务器上的服务 第二步,在服务器上选择需要承载搜索服务的服务器,并启动服务列表上的sharepoint server search 第三步,从管理中心进入管理服务应用程序 第四步,新建search service application 第五步,在弹出的新建窗口分别填好相应信息点击确定,主要注意的是 应用程序池可以选择已经有的,也可以自己填一个新的名称,选择填写新的之后,程序会在稍后新建一个应用程序池,一般推荐新建应用程序池. 默认情况,爬网组件会用配置好的搜索服务

Sharepoint2013搜索学习笔记之修改搜索拓扑(三)

搜索服务新建好之后可以从管理中心,应用程序管理页面,进入搜索服务的管理页面,进入管理页面之后可以看到当前sharepoint场的搜索拓扑结构. 如果sharepoint场内有多台服务器,需要将搜索组件部署到这些服务器上,可以在装有sharepoint管理中心的服务器上启动sharepoint命令行管理程序,通过口令的方式对搜索拓扑进行更改. 注意: 向新的服务器添加搜索组件之前,必须先启动新增服务器上的搜索服务实例.搜索服务实例将启动搜索服务(OSearch15 和 SPSearchHostCo

[Android学习笔记]Android向下兼

Android向下兼容的思路:使用高版本的API,在运行时判断真实运行平台的API版本,根据不同版本做不同的处理 关键类:Build.class里面定义了API版本相关信息 内部类:VERSION定义当前系统的版本信息,其中包含SDK版本信息Build.VERSION.SDK_INT可以获取到当前运行的系统的SDK版本号 内部类:VERSION_CODES定义了各个版本的枚举信息 适配时: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONE

[Android学习笔记]Android中多线程开发的一些概念

线程安全: 在多线程的情况下,不会因为线程之间的操作而导致数据错误. 线程同步: 同一个资源,可能在同一时间被多个线程操作,这样会导致数据错误.这是一个现象,也是一个问题,而研究如何解决此类问题的相关工作就叫做线程同步. android中,处理线程同步的手段就是:锁 一般分为公平锁和非公平锁: synchronized(内部锁,互斥锁):synchronized是JVM提供的线程同步机制,如果出现问题,JVM能捕获异常,并释放资源,具体实现机制需要查看JVM源码 synchronized的使用特

学习笔记-----Android的View绘制过程

边看源码边参考别人的博客等,做一下学习笔记. 要了解View的绘制,首先得知道View树的结构:(可以参考http://blog.csdn.net/qinjuning/article/details/7226787) 整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,其绘制流程如下: 我们从最基本的思路来理解绘图流程:先确定所有View的大小,然后根据布局决定每个View的位置,然后开画! 这里着重关注具体绘图的Draw方法,其绘制流程为