C++跨平台构建自动化

dbo*_*tha 18 c++ build-automation cross-platform

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

syn*_*tel 10

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

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

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

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


And*_*ite 9

这听起来像是CMake的工作.

  • -1 CMake如何一步到位地在所有平台上构建?AFAIK,`cl.exe`在Linux或OSX上不可用! (9认同)
  • CMake旨在使用平台的工具来构建项目.即使OP想要真正的一站式构建,也有这篇文章(http://www.cmake.org/Wiki/CMake_Cross_Compiling). (2认同)

mur*_*att 7

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

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

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

  • 只是为了让人们在Jenkins或Hudson之间做出选择的记录 - 他们基本上是相同的事情,除了Jenkins是Oracle接管Hudson时发生的原始开发人员分支,Hudson支持在Oracle的控制下逐渐消失,而Jenkins是更强大的他们俩.然而,甲骨文最近与Hudson一起授予了Apache项目 - 所以还有待观察谁将成为更强大的种子,但现在Jenkins是最强大的. (6认同)