1. 程式人生 > >Ubuntu14.04+eclipse下cocos2d-x3.0正式版環境的搭建

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

div 新版 文件中 function ngs method ont alt src

環境:

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到最新版,我更新之後這些報錯都消失了

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