cocos2d-x linux环境搭建-基于eclispse cdt


Ubuntu14.04+eclipse下cocos2d-x3.0正式版环境的搭建

环境:
ubuntu14.04

adt-bundle-linux-x86_64
android-ndk-r9d-linux-x86_64
cocos2d-x-3.0正式版
apache-ant 1.9.3

python 2.7(ubuntu自带)
添加环境变量
export ANDROID_SDK_ROOT=/home/yangming/adt-bundle-linux/sdk
export PATH=${PATH}:/$ANDROID_SDK_ROOT/tools/
export PATH=${PATH}:/$ANDROID_SDK_ROOT/platform-tools/

export NDK_ROOT=/home/yangming/adt-bundle-linux/android-ndk-r9d
export PATH=${PATH}:/$NDK_ROOT

export ANT_ROOT=/opt/apache-ant-1.9.3
export PATH=${PATH}:/$ANT_ROOT/bin.
终端下运行build文件夹里的install-deps-linux.sh安装gcc等编译需要的环境,这里有硬性要求,gcc至少4.8,opengl至少1.5,低于标准可能编译不过去,编译过去也运行不了。

终端下运行setup.py,cocos new创建项目,这个各个平台应该都一样的。
得到如图所示目录

cocos2d-x linux环境搭建-基于eclispse cdt_第1张图片
复制代码
  1. cd test/proj.linux/

进入linux工程目录,执行
复制代码
  1. cmake ..

生成makefile文件,如图
cocos2d-x linux环境搭建-基于eclispse cdt_第2张图片
打开eclipse,导入proj.linux工程,选择C/C++,选择Existing Code as Makefile Project,选linux gcc
cocos2d-x linux环境搭建-基于eclispse cdt_第3张图片


此时这个项目已经可以直接编译运行了,但是源码在目录外看不到,我们再来引入源码。
右键单击工程->Properties->C/C++ General->Paths and Symbols->Source Location->Link Folder,依次导入工程目录里的Classes,Resources,cocos2d。cocos2d由于linux工程里有同名目录,可以改个名

cocos2d-x linux环境搭建-基于eclispse cdt_第4张图片
现在工程应该是这个样子,打开一个文件,发现有很多错误,
cocos2d-x linux环境搭建-基于eclispse cdt_第5张图片
看一下错误的原因,以这个Director为例,我们打开他的头文件,发现CC_DLL这个宏没有被识别
cocos2d-x linux环境搭建-基于eclispse cdt_第6张图片
这个宏是在哪里定义呢,在各个平台各自的CCPlatformDefine.h里,
cocos2d-x linux环境搭建-基于eclispse cdt_第7张图片
可以看到,由于#if CC_TARGET_PLATFORM == CC_PLATFORM_LINUX没有成立,导致这个文件的内容全都无效,我们可以找一下CC_TARGET_PLATFORM,他在/test.linux/cocos2dsrc/cocos/base/CCPlatformConfig.h,这文件里列出各个平台的编号,CC_TARGET_PLATFORM先被设置为0,再在下面判断后重设,我们看到linux这行是灰色的,就是#if defined(LINUX)没有成立,我们只需要在Paths and Symbols里添加LINUX参数和CC_DLL,LINUX值为1,CC_DLL值为空,如图
cocos2d-x linux环境搭建-基于eclispse cdt_第8张图片
如图,
cocos2d-x linux环境搭建-基于eclispse cdt_第9张图片
必须要把Managed Build Setting 置于 GCC Built-in Compiler Settings之上,在Providers里先取消GCC Built-in Compiler Settings,点Apply应用,再选中GCC Built-in Compiler Settings,再点Apply,回到Entries里,Managed Build Setting就跑到 GCC Built-in Compiler Settings上面了
cocos2d-x linux环境搭建-基于eclispse cdt_第10张图片
cocos2d-x linux环境搭建-基于eclispse cdt_第11张图片
好,现在AppDelegate.cpp已经不报错了,大部分文件都正常了,但还有一小部分还会报错,比如HelloWorldScene.cpp
cocos2d-x linux环境搭建-基于eclispse cdt_第12张图片
MenuItemImage这个类报错,我们找到MenuItemImage.h,发现function这行报错,std::function是c++11特性,我们需要让cdt识别c++11特性。
cocos2d-x linux环境搭建-基于eclispse cdt_第13张图片
找到functional文件,这里的问题和上面的平台式识别问题类似,#if __cplusplus >= 201103L这个判断没有成立,__cplusplus这个值默认值是199711L,我们需要在Paths and Symbols里添加__cplusplus=201103L,同时添加-std=c++11,如图
这里可以点Export Settings导出设置到xml,新工程导入就可以

cocos2d-x linux环境搭建-基于eclispse cdt_第14张图片
好,现在整个工程都不报错了,代码提示也都可以正常使用。我们点小锤子build,开始编译了。其实这个工程生成完makefile文件后就可以正常编译,上面的报错只是eclipse cdt的设置问题,并不是真正的错误。
cocos2d-x linux环境搭建-基于eclispse cdt_第15张图片
编译成功后,run as Local C/C++ Application,选MyGame,
cocos2d-x linux环境搭建-基于eclispse cdt_第16张图片
成功!
cocos2d-x linux环境搭建-基于eclispse cdt_第17张图片
自建类需要在CMakeLists.txt里添加,重新运行cmake,生成makefile才可以编译
复制代码
  1. set(GAME_SRC  
          proj.linux/main.cpp  
          Classes/AppDelegate.cpp  
          Classes/HelloWorldScene.cpp  
        )  


android程序员,用惯了eclipse了,用vs各种不爽啊,发个教程,希望能壮大eclipse和linux使用者


还有一些莫名其妙的报错,如Return has value, in function returning void, must implement the inherited pure virtual method,Invalid arguments ' Candidates are: ,Member declaration not found之类的,请更新CDT到最新版,我更新之后这些报错都消失了


你可能感兴趣的:(ubuntu搭建cocos环境,linux开发cocos)