首先列举一下这篇文章的一些关键词:c++,cmake,netbeans,ubuntu,filezilla。
对很多程序员来说,这些关键词都不陌生, 也都是大家常用的。最近一直在着手打算写自己的游戏,但是一直纠结于客户端和服务端开发环境不能一体化的问题,今天算是解决了,颇为曲折,也算是比较幸运。
大部分的程序员都是只负责前后端中的一部分,当然,CTO那就不谈了。我一直在蓄谋一款自己理想中的游戏,实现自己的理念,我这个理念也算是比较创新的吧,也是现在市面上见不到的游戏,不仅仅是理念创新,游戏开发的技术也是创新的,还有很多技术难点需要我自己一一攻克。这个先不谈, 先谈一下这篇文章的重点吧。
我本来打算是在ubuntu13.10上面开发前后端的,如果我使用emacs开发,用ddd调试,那么开发的时间以及复杂度就很高。虽然我可以使用cmake或者是autotools这类的工具来构建我的项目,但是如果不使用eclipse或者是codeblock之类的ide来做开发调试的话,那么效率低下可想而知。做手游,我没有mac但是依然可以在ubuntu下面使用adt开发,但是调试就很麻烦啦,最主要是我选择cocos2dx在Ubuntu下面除了adt之外根本就没有好的开发工具,用emacs是可以,但是如同前面说的,效率很低下,这也不是linux的原因,而是没有钱买mac。即使是windows也还是需要使用真机调试,避免不了的问题。
另外,在前端开发的过程中,需要使用很多的资源处理软件,在前面的文章中我说了可以通过虚拟机解决这个问题,可是依然不够方便,最后的选择还是忍痛抛弃Ubuntu,回到windows下面想办法。
关于服务端开发环境: netbeans+cmake+c+++ubuntu 12.04 server
虚拟机搭建ubuntu开发环境,这个没什么难的,就是注意在安装的过程中跳过在线Download的过程就好,另外,在安装完ubuntu server之后,不要忙着更新源,先安装openssh-server,然后用ftp上传源,以前我用的都是网易的源,但是来到广州之后,电信更新网易的源太慢了,所以我改用了搜狐的源,速度很快,在这里推荐。更新源之后就是安装build-essential。也就是c/c++的开发环境。
ubuntu12.04 server 默认安装的是gcc/g++ -4.6 版本还算是略高的,我的pc用的13.10 版本是4.8,作为服务端开发,本应该选择relhx或者是centos的,但是ubuntu依然可以作为不错的选择。这里没什么问题。另外就是安装cmake,别忘记查看版本,安装的是2.8。
虽然是自己写代码, 但是好的习惯还是使用版本管理工具,我就有个坏毛病,早上起床,记不得昨天写的代码是什么,好像是喝酒断片了一样,非常蛋疼,所以我就强制自己使用版本管理工具,顺便把自己的一些架构图以及思维图都一并提交到版本库,这样早上花个半个小时回顾一下整体,防止写出没用的代码。所以我在我的ubuntu server上面安装配置了subversion,配置的过程也是很简单的,虽然是自己使用,但是依然启用了用户管理的模式,修改authz,passwd,svnserve.conf这三个文件就行了,很简单的。网络我启用的是NAT,让宿主机可以访问server,这样我就可以在宿主机提交和更新代码了。
以前我在创业做页游的时候,后端开发都是共享文件夹,不过那时候是采用erlang开发的后端,基本很少调试的,只要编译过了,很少会有逻辑错误。但是c/c++开发不一样,需要选择一款不错的ide。既然是在虚拟机开发,而且server版本是没有x windows的,总不能使用x-emacs或者是vim吧,那多蛋疼。 记得以前我在学校做一款网络安全的科研项目的时候就是用的远程开发和调试,那时候就用的netbeans,如今就又拿出来用了。远程开发的功能可能也有些人用过,如果想要使用远程调试以及cmake,那么就在server上安装gdb和cmake吧。配置远程开发主机的部分也很好操作,看下图。
因为是远程调试,最简单的方法就是让宿主程序自动复制到远程服务器,来进行远程编译和调试。如下图,在创建远程主机的时候就选择 "自动复制模式",当然其他模式我没有研究过,只是这种比较方便
在使用netbeans创建远程开发项目的时候, 现在代码仓库中初始化一个最简单的项目.只要一个CMakeLists.txt就行了,可以什么都不写。 然后创建在windows 使用Svn客户端update代码,在netbeans创建一个基于现有项目的源码,使用自定义makefile配置,只要一路Next,就会自动配置好了。 一般使用cmake的时候我喜欢外部编译的方式,所以我都会在开发目录下面创建build目录。
可能这里会有几个小问题需要注意的,第一就是每次开发编译和调试的时候就要确定你连接了远程主机,第二就是在运行项目的时候找不到executable. 呵呵, 其实不用担心的,耐心等一下,会弹框让你选择的。好了就到这里了。