deepin搭建cocos 2dx 4.0 开发环境

一、下载cocos源码

下载cocos 2dx 源码。下载完成后,将新增cocos2d-x-4.0.zip的问题,复制到工作目录。

二、编译源码

1、在工作目录解压源码。 

unzip -x cocos2d-x-4.0.zip

2、安装开发依赖

cocos自带了依赖安装工具:install-deps-linux.sh。 但是其强制安装, 可能导致安装版本存在问题, 对其做如下修改: 

#!/bin/bash

echo "This Shell Script will install dependencies for cocos2d-x" 
echo -n "Are you continue? (y/n) "
read answer
if echo "$answer" | grep -iq "^y" ;then
    echo "It will take few minutes"
else
    exit
fi

sudo apt-get update

# run 32bit applicatio: needed for lua relase mode as luajit has 32bit version
# https://askubuntu.com/questions/454253/how-to-run-32-bit-app-in-ubuntu-64-bit
sudo dpkg --add-architecture i386
DEPENDS='libc6:i386 libncurses5:i386 libstdc++6:i386'
 

DEPENDS+=' libx11-dev'
DEPENDS+=' libxmu-dev'
DEPENDS+=' libglu1-mesa-dev'
DEPENDS+=' libgl2ps-dev'
DEPENDS+=' libxi-dev'
DEPENDS+=' libzip-dev'
DEPENDS+=' libpng-dev'
DEPENDS+=' libcurl4-gnutls-dev'
DEPENDS+=' libfontconfig1-dev'
DEPENDS+=' libsqlite3-dev'
DEPENDS+=' libglew-dev'
DEPENDS+=' libssl-dev'
DEPENDS+=' libgtk-3-dev'
DEPENDS+=' binutils'

sudo apt-get install  --yes $DEPENDS

然后安装: 

cd  cocos2d-x-4.0
bash  install-deps-linux.sh

如果存在问题, 那么修复对应依赖问题。

3、编译

mkdir linux-build
cd linux-build
cmake ../

这时如果出现一下告警:

CMake Warning (dev) at /usr/share/cmake-3.22/Modules/FindOpenGL.cmake:315 (message):
  Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when                                                                                                                                                
  available.  Run "cmake --help-policy CMP0072" for policy details.  Use the                                                                                                                                         
  cmake_policy command to set the policy and suppress this warning.                                                                                                                                                  
                                                                                                                                                                                                                     
  FindOpenGL found both a legacy GL library:                                                                                                                                                                         
                                                                                                                                                                                                                     
    OPENGL_gl_LIBRARY: /usr/lib/x86_64-linux-gnu/libGL.so                                                                                                                                                            
                                                                                                                                                                                                                     
  and GLVND libraries for OpenGL and GLX:                                                                                                                                                                            
                                                                                                                                                                                                                     
    OPENGL_opengl_LIBRARY: /usr/lib/x86_64-linux-gnu/libOpenGL.so                                                                                                                                                    
    OPENGL_glx_LIBRARY: /usr/lib/x86_64-linux-gnu/libGLX.so                                                                                                                                                          
                                                                                                                                                                                                                     
  OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for                                                                                                                                               
  compatibility with CMake 3.10 and below the legacy GL library will be used.                                                                                                                                        
Call Stack (most recent call first):                                                                                                                                                                                 
  cmake/Modules/CocosBuildHelpers.cmake:273 (find_package)                                                                                                                                                           
  cmake/Modules/CocosConfigDepend.cmake:16 (cocos_find_package)                                                                                                                                                      
  cmake/Modules/CocosConfigDepend.cmake:91 (cocos2dx_depend)                                                                                                                                                         
  cocos/CMakeLists.txt:131 (use_cocos2dx_libs_depend)                                                                                                                                                                
This warning is for project developers.  Use -Wno-dev to suppress it.   

这是GL版本版本导致的。 在$COCOS_HOME/CmakeLists.txt中, 添加GL版本指定:

# set default minimum deployment target
if(XCODE)
    if(NOT DEFINED CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET)
        SET (CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET 8.0)
    endif()
endif()

if (POLICY CMP0072) 
  set(OpenGL_GL_PREFERENCE LEGACY)
endif()

重新到 $COCOS_HOME/linux-build中执行:

cmake ../
make -j10

注意其中-j10是处理器数量, 根据编译机器填写。

三、添加环境变量

编译完成后, 在$COCOS_HOME/tools/cocos2d-console/bin 存在相关工具。 

在~/.bashrc中添加如下内容: 

# Add environment variable COCOS_CONSOLE_ROOT for cocos2d-x
export COCOS_HOME=/media/champ/110603F2110603F2/game/cocos2d-x-4.0
export COCOS_CONSOLE_ROOT=$COCOS_HOME/tools/cocos2d-console/bin
export PATH=$COCOS_CONSOLE_ROOT:$PATH

# Add environment variable COCOS_X_ROOT for cocos2d-x
export COCOS_X_ROOT="/media/champ/110603F2110603F2/game"
export PATH=$COCOS_X_ROOT:$PATH

# Add environment variable COCOS_TEMPLATES_ROOT for cocos2d-x
export COCOS_TEMPLATES_ROOT=$COCOS_HOME/templates
export PATH=$COCOS_TEMPLATES_ROOT:$PATH

保存后, 在新的终端中可以查询到cocos的版本信息:

 四、创建cocos项目工程

在工作目录中, 使用:

cocos new ougame -p com.champ.mcc -l cpp -d ./

创建一个名为ougame 的项目, 项目结构如下: 

.
├── Classes
│   ├── AppDelegate.cpp
│   ├── AppDelegate.h
│   ├── HelloWorldScene.cpp
│   └── HelloWorldScene.h
├── CMakeLists.txt
├── cocos2d
│   ├── AUTHORS
│   ├── CHANGELOG
│   ├── cmake
│   ├── CMakeLists.txt
│   ├── cocos
│   ├── CONTRIBUTING.md
│   ├── docs
│   ├── download-deps.py
│   ├── extensions
│   ├── external
│   ├── install-deps-linux.sh
│   ├── issue_template.md
│   ├── licenses
│   ├── README.md
│   └── tools
├── proj.android
│   ├── app
│   ├── build.gradle
│   ├── gradle
│   ├── gradle.properties
│   ├── gradlew
│   ├── gradlew.bat
│   └── settings.gradle
├── proj.ios_mac
│   ├── ios
│   └── mac
├── proj.linux
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   └── main.cpp
├── proj.win32
│   ├── build-cfg.json
│   ├── game.rc
│   ├── main.cpp
│   ├── main.h
│   ├── res
│   └── resource.h
└── Resources
    ├── CloseNormal.png
    ├── CloseSelected.png
    ├── fonts
    ├── HelloWorld.png
    └── res

五、编译项目

按照顺序执行如下命令: 

cd ougame/proj.linux

# 生成编译所需文件
cmake -G "Unix Makefiles" ../
# 编译
make -j10

在执行cmake时, 可能存在 “cmake --help-policy CMP0072"的问题, 安照之前的处理办法, 在ougame/CMakeLists.txt中做相同操作,就可以排除编译异常。

编译完成后,在ougame/proj.linux/bin生成对应的二进制文件。

 该二进制文件可以直接运行。

该项目, 可以直接使用vscode, clion,codeblocks等工具直接打开。