如何在Ubuntu下编译生成自己创建的Cocos2dx项目

如题所述

刚开始对makefile不熟悉,结果弄了好久才弄好,在这里记录一下,顺便也给那些有需要的人做一个参考,不要走太多的弯路。
首先运行create-android-project.sh创建一个新的项目,我比较喜欢把项目放在一起,比较好管理,所以我把新建的项目移动到当前用户目录下的Projects/Cocos2dx目录下。
然后进入proj.Android/jni目录下,打开Android.mk,修改如下:将:COCOS2DX_ROOT="$DIR/../.."
改为:COCOS2DX_ROOT="$DIR/../../../../cocos2d-x-2.1.5/" #相对于当前目录的cocos2d-x的目录,这是我的目录
修改完成后保存以后就可以运行build_native.sh编译Android下的项目了,如果提示NDK_ROOT没有设置的话就使用export NDK_ROOT=(你的NDK的目录,同样也是相对于当前目录的位置),例如我的是export NDK_ROOT = ../../../../Android/ndk-r9
如果想在Ubuntu下直接编译运行的话,就按下面的方法:
先新建一个项目下新建一个文件夹proj.linux,然后在proj.linux下新建一个main.cpp文件,内容如下:#include"
../Classes/AppDelegate.h"#include"cocos2d.h"#include<stdlib.h#include<stdio.h#include<unistd.h#include<string
USING_NS_CC;intmain(intargc,
char**argv){AppDelegate app;CCEGLView*elgView =CCEGLView::sharedOpenGLView();elgView-setFrameSize(800,
480);returnCCApplication::sharedApplication()-run();}View Code这个代码同样,可以直接在例子中直接复制过来。
接着在proj.linux下新建一个Makefile,内容如下(也可以直接从cocos2d-x中的例子中复制一个过来,然后按自己的项目修改):
EXECUTABLE =
newpathtest #要生成的目标的名字INCLUDES= -I.. -I../
ClassesSOURCES= main.
/Classes/AppDelegate.
/Classes/HelloWorldScene.
cppCOCOS_ROOT= ../../../../cocos2d-x-
2.1.5#相对于当前目录的cocos2d-x的位置include $(COCOS_ROOT)
/cocos2dx/proj.linux/
cocos2dx.mkSHAREDLIBS+= -lcocos2d -
lcocosdenshionCOCOS_LIBS= $(LIB_DIR)/libcocos2d.so $(LIB_DIR)/
libcocosdenshion.soINCLUDES+= -I$(COCOS_ROOT)/CocosDenshion/include
$(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 $@View Code最后在proj.linux目录下执行命令: make DEBUG=1 all 即可。
当然,这些手动建造太麻烦,你也可以写一个shell文件来处理。
温馨提示:答案为网友推荐,仅供参考