为多个移动平台构建工具

时间:2012-03-28 14:40:35

标签: c++ build build-automation multiplatform

我们有一个针对多个移动平台的复杂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胶水并将它们保持在一起。

所以我正在寻找关于如何统一这组不同平台的构建过程的建议。

  • 绝对必须处理构建iPhone和Bada可执行文件以及Android版本的原生部分(因为没有人可以单独测试所有三个平台)。
  • 必须处理由多个共享库组成的大型项目,一个主二进制文件,一个用于相同平台的测试二进制文件以及仅在某些平台上构建的一些辅助二进制文件(当然,仅限Win32)。
  • 必须能够使用版本控制系统和一些用户自定义变量生成构建配置头和Java文件,因为我们做了18并为不同的客户计算略有不同的构建。
  • 当然,它必须自动处理依赖项(头文件)并且通常是可靠的。

对于其他我准备解决任何缺陷的事情,但我显然希望将贝壳胶带和吐痰的量保持在最低限度,所以它应该:

  • 能够与Visual Studio,Eclipse和XCode集成,以便每个环境都可以触发构建,将构建产品上传到相应的目标并在那里附加调试器。
  • 能够构建Java并为Android调用自定义打包工具,因此我们不必破解Google在过去两年中无偿且不兼容地更改两次的ant构建脚本(并且旧的SDK不能下载)。
  • 能够安装各种数据文件并调用随机打包器和随机的其他脚本和工具,因此不必与太多的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

2 个答案:

答案 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. Developer / Maintainer创建CMakefile。
  2. Builder运行cmake,它使用CMakefile生成特定于平台的构建文件。(linux makefiles / OSX makefile / VS project files)
  3. Builder会触发构建命令。

答案 1 :(得分:3)

CMake是最好的选择。 从CMake 2.8.11开始,Windows CE支持开箱即用。在该版本发布之前,可以使用Nightly Binary的CMake。