由于项目原因,需要把一个使用cocos2dx的项目放到Linux下运行(在Windows下使用VS编写,可以正常运行),晚上调试了大概3 ~4小时,终于把项目运行了起来。在这里记录一下注意的事项,方便自己也能提醒大家不要犯一样的错误。
我使用的是Ubuntu kylin 14.04 , cocos2dx版本是2.2.3。
项目工程文件如下:
已经包含了cocos2dx的文件包,自己的项目是在projects中。
projects文件夹内容如下:
Classes文件夹中是项目的源文件,包括一些.h以及.cpp的源代码。
Resources文件夹中是项目的资源文件,包括一些图片和文本。
而我们重点要关注的就是proj.linux文件夹,他其中的内容如下:
main.cpp是项目的主函数,其中包括了对上层的classes文件的调用。
build.sh以及makefile文件都是为项目的编译而作的,是我们重点关注的部分。
我的makefile文件如下,仅供参考:
EXECUTABLE = TheDemo
INCLUDES = -I../ \
-I../../ \
-I../Classes \
-I$(COCOS_ROOT)/CocosDenshion/include \
-I$(COCOS_ROOT)/extensions/ \
-I$(COCOS_ROOT)/external/ \
-I$(COCOS_ROOT)/external/chipmunk/include/chipmunk
//这里要注意要包含所有项目文件,对于我来说,就是上面所提到的classes文件夹的内容
SOURCES = main.cpp \
../Classes/AppDelegate.cpp \
../Classes/HelloWorldScene.cpp \
../Classes/eventManager.cpp \
../Classes/GameData.cpp \
../Classes/GameScene.cpp \
../Classes/levelselect.cpp \
../Classes/MyNodes.cpp
COCOS_ROOT = ../../..
include $(COCOS_ROOT)/cocos2dx/proj.linux/cocos2dx.mk
//这里是一些lib文件以及库文件,是参考cocos2dx的样例项目写的,就是这里没有搞对浪费了很长时间。
SHAREDLIBS += -lcocos2d -lcocosdenshion -lcurl -lpthread
COCOS_LIBS = $(LIB_DIR)/libcocos2d.so $(LIB_DIR)/libcocosdenshion.so
STATICLIBS += \
$(LIB_DIR)/libextension.a \
$(LIB_DIR)/libbox2d.a \
$(LIB_DIR)/libchipmunk.a
$(TARGET): $(OBJECTS) $(STATICLIBS) $(COCOS_LIBS) $(CORE_MAKEFILE_LIST)
@mkdir -p $(@D)
$(LOG_LINK)$(CXX) $(CXXFLAGS) $(OBJECTS) -o $@ $(SHAREDLIBS) $(STATICLIBS)
$(OBJ_DIR)/%.o: %.cpp $(CORE_MAKEFILE_LIST)
@mkdir -p $(@D)
$(LOG_CXX)$(CXX) $(CXXFLAGS) $(INCLUDES) $(DEFINES) $(VISIBILITY) -c $< -o $@
$(OBJ_DIR)/%.o: ../%.cpp $(CORE_MAKEFILE_LIST)
@mkdir -p $(@D)
$(LOG_CXX)$(CXX) $(CXXFLAGS) $(INCLUDES) $(DEFINES) $(VISIBILITY) -c $< -o $@
特别需要注意的是在编译和链接的过程中如果出现无法对应或者缺少文件的情况。在项目文件以及库文件确保完整的情况下多半是makefile文件没有写对。没有包含一些文件目录或者缺少lib文件。如果出现这样的情况应该注意。
如果命令行操作比较麻烦的话使用IDE是很好的选择,因为并不是非常了解ubuntu,还在学习过程中,调试这个项目使用的是Netbeans 8.0.2,感觉还是比较好用的。
附上一张终于运行成功的截图:
今后还要更加深入的了解Linux~
6.Run as Android Application 即可,在proj.android的bin目录下会生成一个apk文件,至此移植结束。
--------------------------------------分割线 --------------------------------------
--------------------------------------分割线 --------------------------------------