我们有一个针对多个移动平台的复杂C ++代码库。我们目前有 Windows CE (原始CE和移动版本为4.2到6.5), Android (2.1 +), iPhone (4+) ),几乎工作 Bada (2.0+),如果有任何新的C ++ / CX的东西,可能会添加 Windows Phone (8+)。加上 Win32 上的测试版本和Win64上共享一些代码的服务应用程序。我们也已经尝试在Linux上编译单元测试,并且已经出现了问题(到目前为止业务量太小,但可能会有所改变),以使其在其他Linux平台上运行。
我们目前使用每个平台的本机工具编译代码。它们中的每一个都非常复杂,并且在其中或周围有一些黑客可以实现合理的单击构建。而对于Bada来说,我们还没有解决三星调整过的Eclipse之外的版本,我们必须为生产做这些。
到目前为止它仍然有效,但正变得越来越多的维护问题。目前最大的问题是iPhone构建,因为与Visual Studio项目文件和普通makefile不同,不可能手动在XCode项目中添加/删除/重命名文件,只有两个人拥有MacOS boxen和任何XCode的经验(虽然每个人都有Windows并且知道Visual Studio)。我们还需要为Bada目标创建一些makefile(它是普通的GNU工具链,所以任何能够与那些交叉编译的东西都应该这样做)并且我不会在中期摆脱Android构建中的一些问题:修复bug在cygwin下构建时的依赖性处理,在ant构建脚本之上的一些hacks和用于按摩清单的shell胶水并将它们保持在一起。
所以我正在寻找关于如何统一这组不同平台的构建过程的建议。
对于其他我准备解决任何缺陷的事情,但我显然希望将贝壳胶带和吐痰的量保持在最低限度,所以它应该:
到目前为止,我们已经开始尝试CMake(没有太多时间,所以没有达到目标,但很快就要做一些事情)并且还考虑了SCons。但是几年前我已经尝试使用SCons for Windows CE构建,但是因为它为Visual Studio生成了makefile类型的项目,而那些在VS2005中不适用于嵌入式平台,所以我放弃了。 CMake可以生成本机makefile,但CE需要custom, bit out of date, branch。所以我想问一下,是否还有其他任何我们可能想要研究的工具,或者我们应该注意这些工具的任何已知绊脚石。
更新:我在几个地方找到了Android原生二进制文件的说明,pixellight甚至还有cmake脚本通过直接调用打包工具来生成apk。 this shell script也表明了这一点。这里似乎记录了iPhone usage。
答案 0 :(得分:5)
在我的个人经验中,相同的CMake构建文件可用于在至少Win32(VS2005),Linux(ubuntu)和OS X(10.5.8 Leopard)的平台上生成和构建项目。在Android应用程序构建过程中有多个项目可以使用CMake,例如http://code.google.com/p/android-cmake/。有了所有这些选项,我会认为CMake是个不错的选择。如果您以前有过编写configure.ac和Makefile.ac文件的经验,那么进一步的CMake很容易获取,甚至更容易。
注意:CMake的工作原理:
答案 1 :(得分:3)
CMake是最好的选择。 从CMake 2.8.11开始,Windows CE支持开箱即用。在该版本发布之前,可以使用Nightly Binary的CMake。