C++跨平台构建自动化

C++ cross platform build automation

本文关键字:自动化 构建 跨平台 C++      更新时间:2023-10-16

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

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

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

詹金斯的学习曲线并不糟糕,但可能需要大约3-4个小时才能做好工作,一旦你做到了,一切都很顺利。

如果你想成为专业人士,你可以让它轮询你的源回购,它会在提交后自动启动构建。

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

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

您提到在"一步"中构建构建——这需要通过构建自动化来稍微不同地解决。也就是说,使用连续集成(CI(系统,如上面提到的Jenkins、Hudson或CruiseControl。在您的情况下,您需要在三个不同的平台(Windows、Linux和OSX(上进行构建,这意味着您需要在每个平台上运行一个CI。这些系统在设置时将检查源代码存储库中的更改,当发现更改时,将提取源代码,然后使用CMake为CI运行的平台生成特定于平台的构建文件,然后构建、测试并最终报告构建结果。

这听起来像是CMake的工作。