C ++跨平台构建自动化

时间:2011-07-01 19:08:55

标签: c++ cross-platform build-automation

我有一个跨平台的C ++项目,目标是在Linux,OSX和Windows上成功编译。我正在使用GNU Make来处理所有平台上的构建,gcc用于在Linux和Linux下进行编译。 OSX和cl.exe在Windows下的Cygwin下编译。我目前的工作流程包括在OSX下编码,然后在每个平台上构建以测试代码的可移植性。这个过程有点耗时,我想知道是否有可能在一个步骤中自动构建所有平台?

3 个答案:

答案 0 :(得分:10)

这听起来像是CMake的工作。

答案 1 :(得分:10)

如果我正确理解OP,那么问题不是替换make而是如何在每个平台上启动构建?

我建议使用http://jenkins-ci.org/ - 它是java,可以在Windows,Linux,OSX等上运行。它可以配置为同时启动构建作业,以便任何时候你想要构建每个平台可以同时启动。

詹金斯的学习曲线并不可怕,但是一旦你做到这一点,它可能需要大约3-4个小时才能正常工作。

如果您想成为专业人士,可以让它对您的源代表进行轮询,并在提交后自动启动构建。

答案 2 :(得分:7)

好问题。首先,您无法在一个平台上一步完成这些构建。然而,你可以做的是寻找一个构建系统,它可以轻松地进行跨平台构建和一个工具来为你自动化。这给你一个解决方案可以帮助您完成手动构建,并且可以完全专注于开发代码。

CMake (如前所述)为跨平台构建提供了一个很好的解决方案。简而言之,通过CMake,你得到了用于目标平台的Visual Studio解决方案/项目,makefile等,然后您可以使用它在该特定平台上构建。您的工作是维护CMake构建文件,CMake负责为您构建的平台生成特定的构建文件。

您提到构建“一步”构建 - 需要通过构建自动化稍微区别对待。也就是说,使用Continuous Integration(CI)系统,如上面提到的Jenkins,HudsonCruiseControl。在您的情况下,您需要在三个不同的平台(Windows,Linux和OSX)上进行构建,这意味着您需要在每个平台上运行CI。设置这些系统时将检查源代码存储库中的更改,并在找到更改时获取源,然后使用CMake,它将为运行CI的平台生成特定于平台的构建文件,然后构建,测试,最后报告结果如何构建。