一 CMAKE
首先说一下Cmake的作用, CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似LINUX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 linux 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件
CMAKE需要指定两个目录。一个是源目录,另一个是目标目录。源目录是CMakeLists.txt文件所在目录。目标目录是生成的VS工程文件目录(这里以VS工程举例),当然其中会包含多个工程文件。
二 CEGUI源码构建
打开cmake-2.8.12.1-win32-x86/bin/cmake-gui.exe,首先构建cegui-deps-0.8.x-src,并设置VS2010的编译器,如下图:
随后进入configure阶段,configure成功后点击Generate按钮即可产生VS2010项目文件了。
打开VS2010,使用Ctrl+Shift+O打开CEGUI-DEPS解决方案(.sln)文件,选择MinSizeRel方式进行构建,保证产生的lib和dll文件最小(话说cmake生成的Makefile若不采用MinSizeRel的话,产生的二进制文件大得离谱)。成功后,关闭项目,将生成的dependencies文件夹从E:/Develop/cegui-deps-0.8.x-src复制到E:/Develop/cegui-0.8.3中。
同样的方法用于cegui-0.8.3。下面是设置的截图:
这里要注意勾上下面几个参数:
CEGUI_BUILD_RENDERER_OGRE用OGRE渲染
CEGUI_BUILD_RENDERER_OPENGL 用OPENGL渲染
CEGUI_BUILD_RENDERER_DIRECT3D10 用DX渲染
CEGUI_BUILD_XMLPARSER_EXPAT 用于解析XML文件
CEGUI_HAS_FREE_TYPE 编译CEGUI需要的库
CEGUI_HAS_PCER_REGEX没有的话运行SampleFramework,Sample加载到一半时出现“RegexMatcher Validator”缺失的错误
CEGUI_SAMPLES_开头的文件勾上 用于生产例子程序 否则例子程序不会生产 不要想单独通过例子程序里的cmakelist生成工程
CEGUI_SAMPLES_USE_上面渲染选择了什么环境 这里对应选择什么环境
这里有一个问题,因为CEGUI默认的XML解析器并没有设置,我们需要手动设置,这里采用的是CEGUI默认的expatXML解析器,也就是设置CEGUI_BUILD_XMLPARSER_EXPAT为checked。
如果要采用Irrlicht作为CEGUI的渲染框架,那么需要设置一些环境变量,下面是如何设置Irrlicht为CEGUI的渲染框架,同样的方法还可以让CEGUI采用OpenGL、OpenGL3、Direct3D11来进行渲染。
当configure和generate都成功后,就可以关闭cmake-gui了。打开VS2010,对cegui项目进行构建。下面是VS2010的截图:
如果在编译的过程中出现无法打开头文件以及无法链接到库的情况,那么可能cmake的路径没有设好。其实很多编译不成功的问题都来自于没有设置好路径。那么在Visual Studio里面的每一个项目中设置路径就能够顺利地编译了。
但是为毛例子程序编译不成功提示 cegui_target_link_libraries这个命令不认识 但是前面这个命令怎么又认识了cegui_apple_app_setup 懂的太少还有好多坑要挖 cmake是怎么认识这些命令的呢 查了好多资料 没搞定 !!!以后弄明白了再来写上
其实就是个小问题子文件夹cmakelist是依赖父文件夹的cmakelist,sample文件夹的cmakelist依赖整个项目的cmakelist ,不能通过子文件夹下自己的cmakelist生成工程文件 必须通过跟目录下的cmakelist设置参数选项来生成例子工程(都是泪啊 这样的问题弄了这么久 坑!大家别躺坑了)
此外如果编译过程中出现“常量中含有换行符”提示,那是因为字符编码格式可能不一样,我的做法是将有问题的字符串后面添加一个空格,这样的话就不会报类似的错误了,结果也不影响显示。
生成完毕后,将dependencies/bin里面的文件全部复制到bin中或者配置环境变量,即可顺利运行CEGUISampleFramework-0.8.exe浏览CEGUI的例子。