题外话:最近负责把我们的游戏客户端往mac下移植,其他都好办,毕竟游戏客户端的主要职能是游戏渲染和业务逻辑,没有太多平台相关的东西,而渲染又是引擎所负责的,对于客户端来说不用关心这个。
但是原生gui的移植一直是个难题(什么算原生gui? 我把游戏内由引擎进行渲染的gui算做正常的游戏gui,但是由于一些技术原因无法用引擎来渲染的gui算做原生gui,说白了就是在windows下用mfc写的对话框,比如可以拖到游戏窗口外的聊天窗等等)。
经过一些考量,最终决定放弃自己对其进行封装的想法,毕竟有专业做这个的,咱没必要重复发明轮子。
于是必然要使用现有的跨平台的gui库,最知名的两个便是qt和wxWidgets。至于为什么不选择QT,个人认为它太厚重了,虽然QT的源代码一直是我学习的宝库,但我们做的毕竟是游戏,不可能把这个庞然大物加进来。
好了,题外话说完了,下面进入正题。如何使用xcode搭建一个wxWidgets的开发环境。
===================================================================================
1、下载wxWidgets源代码进行编译。(我下的是wxWidgets-2.9.1)
方法:a、使用终端,进入源代码目录,建立一个文件夹coocabuild,进入此目录
$mkdir cocoabuild
$cd cocoabuild
b、指定编译的cpu架构,我们使用的是i386架构
$arch_flags="-arch i386"
c、$../configure --with-cocoa --disable-shared CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags"
d、$make
f、如果要编译例子,则 $cd samples
$make
经过以上几步,我们在cocoabuild/lib/文件夹下得到我们需要的静态链接库文件和与此库对应的setup.h文件
2、建立一个新的工程,将wxWidgets相关文件拷到工程文件夹下(这里我习惯将依赖文件和工程放到一起)需拷贝的文件有
a、/include 文件夹,这里包含了所需要的头文件
b、/coocabuild/lib 文件夹,这里包含了所需要的库文件
3、在xcode中,设定工程依赖的头文件和库文件
a、在Header Search Path中添加 ./include 和./lib/wx/include/osx_cooca-unicode-static-2.9 (这个别忘了,这个文件夹下包含与平台定义相关的setup.h头文件)
b、一大堆.a文件直接拖到工程中就好了。
4、在xcode中,添加编译工程需要的Framework,如果不加的话,会有一些link error
a、carbon
b、IOKit
c、QuickTime
d、OpenGL
========ok,随便捡一个sample中的代码,加入工程中测试,build and go