cocos2dx交叉编译之Android.mk修改

来源:互联网 发布:golang defer 函数 编辑:程序博客网 时间:2024/05/16 19:51

在cocos的交叉编译中,我们或多或少的都需要对android.mk进行一些修改,那么android.mk到底是个用来做什么的文件呢?

首先来看一下在我们创建项目后,android.mk里边到底有些什么。

下边就是创建项目后,android.mkde 的原内容

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := cocos2dcpp_sharedLOCAL_MODULE_FILENAME := libcocos2dcppLOCAL_SRC_FILES := hellocpp/main.cpp \                   ../../Classes/AppDelegate.cpp \                   ../../Classes/HelloWorldScene.cppLOCAL_C_INCLUDES := $(LOCAL_PATH)/../../ClassesLOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_staticLOCAL_WHOLE_STATIC_LIBRARIES += box2d_staticLOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_staticinclude $(BUILD_SHARED_LIBRARY)$(call import-module,cocos2dx)$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)$(call import-module,CocosDenshion/android)$(call import-module,extensions)$(call import-module,external/Box2D)$(call import-module,external/chipmunk)
好吧,里边的大部分内容,虽然不明白,但是下边这些,你肯定认识:
LOCAL_SRC_FILES := hellocpp/main.cpp \                   ../../Classes/AppDelegate.cpp \                   ../../Classes/HelloWorldScene.cpp

这不就是classes下的helloworld和appdelegate么~ 那这两个文件又是做什么的呢?appdelegate当然是我们在vs中调试运行的入口了。

说到这里,我们再来想一想,android.mk是做什么的。

Android.mk就是用来向编译系统描述源代码所在地的一个文件。


当我们在vs中,编写、调试完毕后,我们的代码当然不可能只有appdelegate和helloworld了。

下边就是一种对android.mk的简单修改,从而可以使我们的项目可以正常编译。

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := cocos2dcpp_sharedLOCAL_MODULE_FILENAME := libcocos2dcppLOCAL_SRC_FILES := hellocpp/main.cpp \                   ../../Classes/AppDelegate.cpp \   ../../Classes/EnemyBig.cpp \   ../../Classes/EnemyMid.cpp \   ../../Classes/EnemySmall.cpp \   ../../Classes/LayerBullet.cpp \   ../../Classes/LayerEnemy.cpp \   ../../Classes/LayerGame.cpp \   ../../Classes/LayerGround.cpp \   ../../Classes/LayerMenu.cpp \   ../../Classes/LayerProp.cpp \   ../../Classes/LayerUI.cpp \   ../../Classes/PlayerPlane.cpp \   ../../Classes/SceneGame.cpp \   ../../Classes/SceneMenu.cpp \   ../../Classes/SceneOver.cpp    LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../ClassesLOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_staticLOCAL_WHOLE_STATIC_LIBRARIES += box2d_staticLOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_staticinclude $(BUILD_SHARED_LIBRARY)$(call import-module,cocos2dx)$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)$(call import-module,CocosDenshion/android)$(call import-module,extensions)$(call import-module,external/Box2D)$(call import-module,external/chipmunk)
看到和原文件有哪些不同了么?

这种方式需要做些简单的操作如下图所示,我们需要把自己的代码,从proj.win32中,移动到Classes中,


然后在android.mk中把自己编写的cpp的路径写入到android.mk,helloworld.cpp哪一行删除即可。



对android.mk修改完毕后,打开cygwin进行交叉编译。看到如下图的内容时,恭喜你,成功了


下边是编译成功的截图


然后就可以导入eclipse了大笑

导入后还有其他问题,详解见另一篇多图文章吐舌头






小弟才疏学浅尴尬,也恳请各位路过的大神多指点,小弟定加努力奋斗




0 0
原创粉丝点击