Skip to content

Archive

Tag: cmake
几个月前KlayGE的WinRT工程就已经转到CMake的方式进行管理。但因为CMake本身不支持WinRT,当时的做法是修改CMake的代码,打上自己的补丁后才能使用。现今,CMake有了个微软的fork,从我的补丁出发,专攻WinRT等平台上的兼容问题。目前这个分支能很好地生成Windows Store和Windows Phone的工程。 使用方法 对于生成其他平台的工程,这个分支的CMake和原先完全一样。对于WinRT平台,需要通过这样的命令行参数来指定目标系统和版本号: -DCMAKE_SYSTEM_NAME=WindowsPhone(或WindowsStore) -DCMAKE_SYSTEM_VERSION=8.0(或8.1) 实际上这个做法相当于和WinCE一样,在platform generator级别生成WinRT的部分,比我原先用compiler gener ...
传统上,KlayGE集成的是单数版本的boost。但这次1.56的开发周期实在太长了,原定2月份出来的,足足延期了6个月。原因应该是他们在往git上迁移,并且在做模块化的重构。现在每个boost库的头文件、源文件和帮助文件都在一个单独的git库里,通过submodule的方式加到boostorg这个上层git库中。 还好,对使用boost来说,差别不大,照样可以永远原先的方法编译和使用。所以和升级Python不同的是,把boost升级到1.56.0没有遭遇太大的麻烦。 补丁 在之前的版本里,为了在WinRT和Android上使用boost,需要打很多补丁,修改很多地方才行。这些修改在这几个版本的boost里被逐渐集成进去,所以补丁的数量减少了很多。尤其是,微软的OpenTech团队直接 ...
上一篇我提到了如何用CMake管理Android工程。KlayGE除了Windows、Linux和Android之外,还支持WinRT平台。是的,WinRT虽然和Windows桌面很接近,但在一些细节上存在一些差异,使得它们应该被考虑为两个不同的平台。就好像Android和Linux应该考虑为不同平台一样。 区别 在KlayGE中,WinRT和Windows桌面的区别除了代码上,还涉及到工程文件和开发流程上。WinRT的工程需要考虑资源、打包、签名等,都是Windows桌面不需要的。从概念上看,WinRT开发更像Android这样的移动平台开发。 Android程序构建,用的是MinGW或Unix的makefile的方法,所以只需要把里面定义的编译器等换掉就八九不离十了。WinRT用的是VS2012+的工程文件,需要对其进行修改 ...
2年前KlayGE的工程文件就已经在王锐的帮助下切换到CMake。上个版本中,第三方库也已经都改用CMake。但是,对于Android版本来说,原先仍然使用的是NDK的那套东西。所以在维护上带来了不小的开销。随着代码量越来越大,如果能把Android也纳入到CMake工程中,开发起来就能更方便。所以前一阵子做了些探索,最终解决了这个问题。 原有的编译方法 我一直都没有使用Eclipse,而是纯用命令行的方式进行编译。需要: 准备好AndroidManifest.xml、Android.mk、 Application.mk等工程文件 android update project -p . -s --target=android-10,生成build.xml等 ndk-build,编译出.so 把所需资源编译和拷贝到assets目录 ant debug,打包 ...
KlayGE 4.4的开发刚刚开始。在目前的开发版本里,编译脚本有了较大的改进,速度提升、内存消耗降低。这里就先总结一下一些经验。 MSBuild KlayGE的编译脚本原先是通过调用devenv,也就是Visual Studio的IDE来编译工程的。用户的普遍反映是编译信息不断滚动,很难看清是否有错误。前不久在编译Salvia的时候,看到空明大大的脚本输出通过不同颜色区分warning和error。问了一下才知道他调用的是MSBuild,本身就带颜色高亮。 MSBuild从VS2008开始就集成到Visual Studio了,在VS2010的时候已经全面接管了C++工程的编译。所以,如果调用devenv来编译一个工程,那么它的流程是: 启动VS IDE 启动MSBuild,调用cl和linker等 关闭VS IDE ...
昨天glloader和kfont改用CMake之后,KlayGE也删除了vc9和vc10的工程文件,改用CMake为主。由于第三方库的源代码也都内含在KlayGE中,王锐的cmake脚本简化得多了,不需要那些寻找模块的过程,直接使用相对路径来设置。一站式编译脚本build_all.py也修改为使用新的cmake来生成IDE工程文件和编译。 注意,在安装cmake的时候需要选择把cmake的目录加入系统PATH。
在KlayGE 3.12里,王锐提供了KlayGE和glloader的cmake工程脚本。但原先手动生成的工程文件仍然存在。比如,glloader提供了cmake、vc9、vc10、codelite和android的工程文件;kfont提供了cmake、vc10和android的。随着时间的发展,IDE越来越多(比如VS11 Beta的发布),维护多种工程文件的负担也随之增多。况且cmake就是用来生成多种IDE的工程文件的。 在最新的开发版本里,glloader和kfont的cmake脚本得到加强,足以取代vc9和vc10的工程文件(很多是从空明的Salvia里借鉴来的)。于是,cmake成为首选的工程文件而继续维护,vc9和vc10的都被删掉了。另外增加了build_glloader.py和build_kfont.py,直接运行就可以完成cmake、编译和安装的任 ...