按 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 】


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章