zoukankan      html  css  js  c++  java
  • 按 Eclipse 开发喜好重新布置 cocos2dx 目录层次

    【tonyfield 2013.08.29 】

    1.  Cocos2dx 库的改动

    处于个人的固执,花一天时间重新布置了cocos2dx 2.1.4的目录层次,将android平台无关的代码全数裁剪,代码按模块置于 jni 下,主要分为

    cocos2d, CocosDenshion, extensions, external,third_party 5个主要模块,其中 NDK中已有的 AssetManager及GLES/SLES头文件全部删除,只要包含路径含有 ${NDK_ROOT}/platforms/android-8/arch-arm/usr/include,则这些文件没必要复制在工程中。目录结构如下:

    .
    ├── cocos2dx
    │   ├── actions
    │   ├── base_nodes
    │   ├── cocoa
    │   ├── draw_nodes
    │   ├── effects
    │   ├── include
    │   ├── kazmath
    │   │   ├── include
    │   │   │   └── kazmath
    │   │   │       └── GL
    │   │   └── src
    │   │       └── GL
    │   ├── keypad_dispatcher
    │   ├── label_nodes
    │   ├── layers_scenes_transitions_nodes
    │   ├── menu_nodes
    │   ├── misc_nodes
    │   ├── particle_nodes
    │   ├── platform
    │   │   └── android
    │   │       └── jni
    │   ├── script_support
    │   ├── shaders
    │   ├── sprite_nodes
    │   ├── support
    │   │   ├── component
    │   │   ├── data_support
    │   │   ├── image_support
    │   │   ├── tinyxml2
    │   │   ├── user_default
    │   │   └── zip_support
    │   ├── text_input_node
    │   ├── textures
    │   ├── tilemap_parallax_nodes
    │   └── touch_dispatcher
    ├── CocosDenshion
    │   ├── include
    │   ├── jni
    │   └── opensl
    ├── extensions
    │   ├── AssetsManager
    │   ├── CCArmature
    │   │   ├── animation
    │   │   ├── datas
    │   │   ├── display
    │   │   ├── external_tool
    │   │   │   └── Json
    │   │   │       └── lib_json
    │   │   ├── physics
    │   │   └── utils
    │   ├── CCBReader
    │   ├── Components
    │   ├── GUI
    │   │   ├── CCControlExtension
    │   │   ├── CCEditBox
    │   │   └── CCScrollView
    │   ├── LocalStorage
    │   ├── network
    │   ├── physics_nodes
    │   └── spine
    ├── external
    │   ├── Box2D
    │   │   ├── Collision
    │   │   │   └── Shapes
    │   │   ├── Common
    │   │   ├── Dynamics
    │   │   │   ├── Contacts
    │   │   │   └── Joints
    │   │   └── Rope
    │   ├── chipmunk
    │   │   ├── include
    │   │   │   └── chipmunk
    │   │   │       └── constraints
    │   │   └── src
    │   │       └── constraints
    │   ├── emscripten
    │   ├── libwebsockets
    │   │   ├── include
    │   │   └── lib
    │   │       ├── armeabi
    │   │       ├── armeabi-v7a
    │   │       └── x86
    │   └── sqlite3
    │       ├── include
    │       └── libraries
    │           └── win32
    └── third_party
        ├── libcurl
        │   ├── include
        │   │   └── curl
        │   └── libs
        │       ├── armeabi
        │       ├── armeabi-v7a
        │       └── x86
        ├── libjpeg
        │   ├── include
        │   └── libs
        │       ├── armeabi
        │       ├── armeabi-v7a
        │       └── x86
        ├── libpng
        │   ├── include
        │   └── libs
        │       ├── armeabi
        │       ├── armeabi-v7a
        │       └── x86
        ├── libtiff
        │   ├── include
        │   └── libs
        │       ├── armeabi
        │       ├── armeabi-v7a
        │       └── x86
        └── libwebp
            ├── include
            └── libs
                ├── armeabi
                ├── armeabi-v7a
                └── x86
    
    119 directories


    新的 Android.mk 内容为

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := cocos2dx_top
    
    LOCAL_MODULE_FILENAME := libcocos2d_top
    
    #LOCAL_WHOLE_STATIC_LIBRARIES := cocos_libpng_static
    #LOCAL_WHOLE_STATIC_LIBRARIES += cocos_jpeg_static
    #LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libxml2_static
    #LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libtiff_static
    #LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libwebp_static
    
    COCOS2DX_PATH := $(LOCAL_PATH)/cocos2dx
    LOCAL_EXPORT_C_INCLUDES := $(COCOS2DX_PATH) 
                        $(COCOS2DX_PATH)/include 
                        $(COCOS2DX_PATH)/kazmath/include 
                        $(COCOS2DX_PATH)/platform/android
    
    # define the macro to compile through support/zip_support/ioapi.c
    LOCAL_CFLAGS := -Wno-psabi -DUSE_FILE32API
    LOCAL_EXPORT_CFLAGS := -Wno-psabi -DUSE_FILE32API
    
    include $(BUILD_STATIC_LIBRARY)
    
    $(call import-module,cocos2dx)
    $(call import-module,CocosDenshion)
    $(call import-module,extensions)
    
    $(call import-module,external/Box2D)
    $(call import-module,external/chipmunk)
    $(call import-module,third_party/libcurl)
    $(call import-module,third_party/libjpeg)
    $(call import-module,third_party/libpng)
    $(call import-module,third_party/libtiff)
    $(call import-module,third_party/libwebp)
    


    其中,LOCAL_WHOLE_STATIC_LIBRARIES 没必要定义了

    2. TestCpp 的改动

    复制导入TestCpp工程

     将公用类代码 /home/yourname/cocos2d-x-2.1.4/samples/Cpp/TestCpp/Classes 复制到 TestCpp/jni;

     将assets资源 /home/yourname/cocos2d-x-2.1.4/samples/Cpp/TestCpp/Resources 复制到 TestCpp/assets;


     添加 Eclipse 局部环境变量 COCOS2DX_ROOT 为第1节中项目的jni目录;

     在项目属性中添加第1节改好的 cocos2dx库

     Android.mk 改为

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := testcpp
    
    LOCAL_MODULE_FILENAME := libtestcpp
    
    LOCAL_SRC_FILES := testcpp/main.cpp 
    Classes/AccelerometerTest/AccelerometerTest.cpp 
    Classes/ActionManagerTest/ActionManagerTest.cpp 
    Classes/ActionsTest/ActionsTest.cpp 
    Classes/ActionsEaseTest/ActionsEaseTest.cpp 
    Classes/ActionsProgressTest/ActionsProgressTest.cpp 
    Classes/Box2DTest/Box2dTest.cpp 
    Classes/Box2DTestBed/Box2dView.cpp 
    Classes/Box2DTestBed/GLES-Render.cpp 
    Classes/Box2DTestBed/Test.cpp 
    Classes/Box2DTestBed/TestEntries.cpp 
    Classes/BugsTest/Bug-1159.cpp 
    Classes/BugsTest/Bug-1174.cpp 
    Classes/BugsTest/Bug-350.cpp 
    Classes/BugsTest/Bug-422.cpp 
    Classes/BugsTest/Bug-624.cpp 
    Classes/BugsTest/Bug-886.cpp 
    Classes/BugsTest/Bug-899.cpp 
    Classes/BugsTest/Bug-914.cpp 
    Classes/BugsTest/BugsTest.cpp 
    Classes/BugsTest/Bug-458/Bug-458.cpp 
    Classes/BugsTest/Bug-458/QuestionContainerSprite.cpp 
    Classes/ChipmunkTest/ChipmunkTest.cpp 
    Classes/ClickAndMoveTest/ClickAndMoveTest.cpp 
    Classes/ClippingNodeTest/ClippingNodeTest.cpp 
    Classes/CocosDenshionTest/CocosDenshionTest.cpp 
    Classes/CurlTest/CurlTest.cpp 
    Classes/CurrentLanguageTest/CurrentLanguageTest.cpp 
    Classes/DrawPrimitivesTest/DrawPrimitivesTest.cpp 
    Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp 
    Classes/EffectsTest/EffectsTest.cpp 
    Classes/ExtensionsTest/ExtensionsTest.cpp 
    Classes/ExtensionsTest/NotificationCenterTest/NotificationCenterTest.cpp 
    Classes/ExtensionsTest/ControlExtensionTest/CCControlScene.cpp 
    Classes/ExtensionsTest/ControlExtensionTest/CCControlSceneManager.cpp 
    Classes/ExtensionsTest/ControlExtensionTest/CCControlButtonTest/CCControlButtonTest.cpp 
    Classes/ExtensionsTest/ControlExtensionTest/CCControlColourPicker/CCControlColourPickerTest.cpp 
    Classes/ExtensionsTest/ControlExtensionTest/CCControlPotentiometerTest/CCControlPotentiometerTest.cpp 
    Classes/ExtensionsTest/ControlExtensionTest/CCControlSliderTest/CCControlSliderTest.cpp 
    Classes/ExtensionsTest/ControlExtensionTest/CCControlStepperTest/CCControlStepperTest.cpp 
    Classes/ExtensionsTest/ControlExtensionTest/CCControlSwitchTest/CCControlSwitchTest.cpp 
    Classes/ExtensionsTest/CocosBuilderTest/CocosBuilderTest.cpp 
    Classes/ExtensionsTest/CocosBuilderTest/HelloCocosBuilder/HelloCocosBuilderLayer.cpp 
    Classes/ExtensionsTest/CocosBuilderTest/TestHeader/TestHeaderLayer.cpp 
    Classes/ExtensionsTest/CocosBuilderTest/ButtonTest/ButtonTestLayer.cpp 
    Classes/ExtensionsTest/CocosBuilderTest/MenuTest/MenuTestLayer.cpp 
    Classes/ExtensionsTest/CocosBuilderTest/AnimationsTest/AnimationsTestLayer.cpp 
    Classes/ExtensionsTest/CocosBuilderTest/TimelineCallbackTest/TimelineCallbackTestLayer.cpp 
    Classes/ExtensionsTest/NetworkTest/HttpClientTest.cpp 
    Classes/ExtensionsTest/NetworkTest/WebSocketTest.cpp 
    Classes/ExtensionsTest/EditBoxTest/EditBoxTest.cpp 
    Classes/ExtensionsTest/TableViewTest/TableViewTestScene.cpp 
    Classes/ExtensionsTest/TableViewTest/CustomTableViewCell.cpp 
    Classes/ExtensionsTest/ArmatureTest/ArmatureScene.cpp 
    
    Classes/ExtensionsTest/ComponentsTest/ComponentsTestScene.cpp 
    Classes/ExtensionsTest/ComponentsTest/EnemyController.cpp 
    Classes/ExtensionsTest/ComponentsTest/GameOverScene.cpp 
    Classes/ExtensionsTest/ComponentsTest/PlayerController.cpp 
    Classes/ExtensionsTest/ComponentsTest/ProjectileController.cpp 
    Classes/ExtensionsTest/ComponentsTest/SceneController.cpp 
    
    Classes/FontTest/FontTest.cpp 
    Classes/IntervalTest/IntervalTest.cpp 
    Classes/KeypadTest/KeypadTest.cpp 
    Classes/LabelTest/LabelTest.cpp 
    Classes/LayerTest/LayerTest.cpp 
    Classes/NodeTest/NodeTest.cpp 
    Classes/TextInputTest/TextInputTest.cpp 
    Classes/MenuTest/MenuTest.cpp 
    Classes/MotionStreakTest/MotionStreakTest.cpp 
    Classes/MutiTouchTest/MutiTouchTest.cpp 
    Classes/ParallaxTest/ParallaxTest.cpp 
    Classes/ParticleTest/ParticleTest.cpp 
    Classes/PerformanceTest/PerformanceNodeChildrenTest.cpp 
    Classes/PerformanceTest/PerformanceParticleTest.cpp 
    Classes/PerformanceTest/PerformanceSpriteTest.cpp 
    Classes/PerformanceTest/PerformanceTest.cpp 
    Classes/PerformanceTest/PerformanceTextureTest.cpp 
    Classes/PerformanceTest/PerformanceTouchesTest.cpp 
    Classes/RenderTextureTest/RenderTextureTest.cpp 
    Classes/RotateWorldTest/RotateWorldTest.cpp 
    Classes/SceneTest/SceneTest.cpp 
    Classes/SchedulerTest/SchedulerTest.cpp 
    Classes/ShaderTest/ShaderTest.cpp 
    Classes/SpineTest/SpineTest.cpp 
    Classes/SpriteTest/SpriteTest.cpp 
    Classes/TextureCacheTest/TextureCacheTest.cpp 
    Classes/Texture2dTest/Texture2dTest.cpp 
    Classes/TexturePackerEncryptionTest/TextureAtlasEncryptionTest.cpp 
    Classes/TileMapTest/TileMapTest.cpp 
    Classes/TouchesTest/Ball.cpp 
    Classes/TouchesTest/Paddle.cpp 
    Classes/TouchesTest/TouchesTest.cpp 
    Classes/TransitionsTest/TransitionsTest.cpp 
    Classes/UserDefaultTest/UserDefaultTest.cpp 
    Classes/ZwoptexTest/ZwoptexTest.cpp 
    Classes/FileUtilsTest/FileUtilsTest.cpp 
    Classes/DataVisitorTest/DataVisitorTest.cpp 
    Classes/ConfigurationTest/ConfigurationTest.cpp 
    Classes/controller.cpp 
    Classes/testBasic.cpp 
    Classes/AppDelegate.cpp 
    Classes/VisibleRect.cpp
    
    #LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
    #LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
    #LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
    #LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
    #LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
    
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
     
    LOCAL_C_INCLUDES := $(LOCAL_PATH)/Classes 
    					$(COCOS2DX_ROOT)/cocos2dx 
    					$(COCOS2DX_ROOT)/cocos2dx/include 
    					$(COCOS2DX_ROOT)/cocos2dx/kazmath/include 
    					$(COCOS2DX_ROOT)/cocos2dx/platform/android 
    					$(COCOS2DX_ROOT)/extensions 
    					$(COCOS2DX_ROOT)/external 
    					$(COCOS2DX_ROOT)/external/chipmunk/include/chipmunk 
    					$(COCOS2DX_ROOT)/CocosDenshion/include 
    					$(COCOS2DX_ROOT)/third_party/libcurl/include 
    					$(COCOS2DX_ROOT)/extensions/network 
    					$(COCOS2DX_ROOT)/external/libwebsockets/include
                
                       
    include $(BUILD_STATIC_LIBRARY)
    

    编译完成。值得注意的时,你不用再在mk文件末尾 添加(call import-module,external/Box2D) 语句,只要添加头文件包含路径。

    【转载请注明来自blog.csdn.net/tonyfield 谢谢 2013.08.30 】


  • 相关阅读:
    Servlet开发
    HTML实现页面自动跳转的五种方法
    AVAYA话机管理
    AVAYA路由
    报关相关知识
    基本杆法
    AVAYA初始配置
    加塞和瞄准
    基本杆法图解
    AVAYA拨号计划
  • 原文地址:https://www.cnblogs.com/pangblog/p/3293935.html
Copyright © 2011-2022 走看看