前言
上周末把一个3.4的项目升级到3.6,并且在windows下用VS2013调试好了,现在我们要把它在linux下调通,看看还有些什么坑。毕竟以前没在linux下做过开发,很多东西要学。
现在就开始学习的过程。
准备工作
首先打开项目根目录下的CMakeLists.txt,把GAME_SRC和GAME_HEADERS里面的内容替换成项目里面的.cpp和.h文件名。一堆文件得一个个弄啊,还好proj.win32下面的.vxproj文件里面也有这些东东,一个个拷贝过来吧。注意win32下的目录分隔符是”\“,linux下必须换成"/"。
然后再修改一下系统的包含目录。原来初始的只有这些东东:
include_directories(
/usr/local/include/GLFW
/usr/include/GLFW
${COCOS2D_ROOT}/cocos
Classes
)
项目用到了Cocos Studio以及SimpleAudio,还得加上对应的路径:
include_directories(
/usr/local/include/GLFW
/usr/include/GLFW
${COCOS2D_ROOT}/cocos
${COCOS2D_ROOT}/cocos/audio/include
${COCOS2D_ROOT}/cocos/editor-support
Classes
)
开始调试
cocos compile -p linux
报错如下:
/home/ace/Devlop/cross/cocos2d/cocos/editor-support/cocostudio/DictionaryHelper.h:28:27: fatal error: json/document.h: No such file or directory
#include "json/document.h"
^
查找一下,这个json/document.h在cocos2d/external目录下。再次修改CMakeLists.txt:
include_directories(
/usr/local/include/GLFW
/usr/include/GLFW
${COCOS2D_ROOT}/cocos
${COCOS2D_ROOT}/cocos/audio/include
${COCOS2D_ROOT}/cocos/editor-support
${COCOS2D_ROOT}/external
Classes
)
再次编译,成功了。前面跑成功的Hello Word不能算,这是我第一次在linux下跑起来一个自己做的游戏,截图纪念一下。
总结##
- Linux下编译,CMakeLists是个很重要的文件,除了源文件和包含文件得一个个写进去以外,系统本身的一些包含文件路径得一个个加到include_directories,我这里没有用到extensions以及cocos/networks的东东,如果用到了都得加进去。
- 如何将现有的文件名批量添加进来,是一个值得研究的问题。不知道有没有工具可以直接添加,或者自己用python/lua甚至c++来写个小工具完成这个事情,貌似也并不困难。
- 后续得将这个实战项目的Android项目在linux下调通,才算是全部大功告成。