zoukankan      html  css  js  c++  java
  • 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创建项目。这个各个平台应该都一样的。

    得到如图所看到的文件夹


    cd test/proj.linux/
    进入linuxproject文件夹,运行
    cmake ..
    生成makefile文件。如图


    打开eclipse,导入proj.linuxproject,选择C/C++,选择Existing Code as Makefile Project,选linux gcc

    此时这个项目已经能够直接编译执行了,可是源代码在文件夹外看不到。我们再来引入源代码。

    右键单击project->Properties->C/C++ General->Paths and Symbols->Source Location->Link Folder,依次导入project文件夹里的Classes,Resources,cocos2d。cocos2d因为linuxproject里有同名文件夹。能够改个名

    如今project应该是这个样子。打开一个文件,发现有非常多错误,

    看一下错误的原因,以这个Director为例,我们打开他的头文件,发现CC_DLL这个宏没有被识别


    这个宏是在哪里定义呢。在各个平台各自的CCPlatformDefine.h里。

    能够看到,因为

    #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值为空。如图


    如图,



    必需要把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上面了

    好。如今AppDelegate.cpp已经不报错了。大部分文件都正常了,但另一小部分还会报错。比方HelloWorldScene.cpp

    MenuItemImage这个类报错。我们找到MenuItemImage.h。发现function这行报错,std::function是c++11特性。我们须要让cdt识别c++11特性。

    找到functional文件,这里的问题和上面的平台式识别问题类似,#if __cplusplus >= 201103L这个推断没有成立,__cplusplus这个值默认值是199711L,我们须要在Paths and Symbols里加入__cplusplus=201103L,同一时候加入-std=c++11,如图

    这里能够点Export Settings导出设置到xml,新project导入就能够


    好,如今整个project都不报错了,代码提示也都能够正常使用。我们点小锤子build。開始编译了。事实上这个project生成完makefile文件后就能够正常编译,上面的报错仅仅是eclipse cdt的设置问题,并非真正的错误。

    编译成功后,run as Local C/C++ Application,选MyGame,

    成功。

    自建类须要在CMakeLists.txt里加入,又一次执行cmake,生成makefile才干够编译

    set(GAME_SRC
      proj.linux/main.cpp
      Classes/AppDelegate.cpp
      Classes/HelloWorldScene.cpp
    )


    另一些莫名其妙的报错,如Return has value, in function returning void, must implement the inherited pure virtual method。Invalid arguments ' Candidates are: ,Member declaration not found之类的,请更新CDT到最新版,我更新之后这些报错都消失了
  • 相关阅读:
    A
    快速幂
    思维+LCA
    补题
    Manacher-马拉车算法
    AC自动机
    欢迎来怼-Alpha周(2017年10月19)贡献分配规则和分配结果
    欢迎来怼--第二十一次Scrum会议
    作业要求 20171026 每周例行报告
    Alpha发布-----欢迎来怼团队
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6808604.html
Copyright © 2011-2022 走看看