【问题标题】:Build solution for C++为 C++ 构建解决方案
【发布时间】:2010-09-22 17:48:41
【问题描述】:

我想为在 Visual Studio 2005 中开发的非托管 C++ 代码设置构建服务器。构建服务器应该能够执行以下操作:

  • 监控 Subversion 存储库的代码更改并安排构建
  • 从 Subversion 签出代码并运行单元测试
  • 提供某种关于构建成功和与之前构建相比的变化的报告

我最初一直在考虑将 CruiseControl 与 Ant 一起使用。有更好的解决方案吗?也许 CruiseControl.Net 和 NAnt?

【问题讨论】:

    标签: c++ build-process build build-automation


    【解决方案1】:

    NAnt 需要大量工作才能有效地构建 C++。它确实是一个彻头彻尾的 .NET 构建系统。我们正在为四个 C++ 平台和一组 .NET 工具构建我们的标题,并且需要一段时间才能使 NAnt 满足我们的需求。例如,NAnt 的 C++ 依赖分析非常糟糕,以至于我们不得不自己编写。它有很多性能问题,我们不得不对其进行破解才能解决。

    所以不要双脚跳进去。做一些初步测试,以确保它真的可以做你想做的事,并了解你需要为 C++ 修改多少。

    此外,我们还将 CruiseControl.NET 用于我们已内置到驱动我们正在开发的游戏的工具之一中的一些 NUnit 东西。对此非常满意,设置起来非常容易。在这里竖起大拇指。

    在之前的演出中,我在您描述的确切场景中使用了 Final Builder - 在构建服务器上。本地构建是使用 Visual Studio 完成的。这是一个非常棒的产品,如果你有一点钱可以花,我会认真考虑。我们从中得到了很好的结果。

    在我现在的公司,我们选择了 NAnt,因为我们不想为团队中的每个工程师都购买 FB。我们也不喜欢 FB 是封闭源代码的。所以我们是 100% Nant 并且喜欢它。只是花了一些时间来塑造它!

    【讨论】:

    • 我们非常成功地将 NAnt 用作构建工具,但 not 作为依赖项分析器 - 正如您所说,NAnt 在这方面表现不佳。我们只是用它来调用 msdev 和 bjam。
    【解决方案2】:

    由于没有人提到,Jenkins 是一个很好的 CI,并且变得越来越普遍(免费也没有什么坏处):

    http://jenkins-ci.org/

    易于安装、使用和监控,并与很多东西(SVN、GIT 等)很好地集成。也非常可定制。启动和运行需要 5 分钟。

    【讨论】:

      【解决方案3】:

      我刚刚开始使用 Visual Build Professional,印象非常深刻,您可以从这里下载功能齐全的 30 天试用版:

      http://www.kinook.com/VBP/

      也完全支持SVN。

      【讨论】:

        【解决方案4】:

        我们使用 FinalBuilder 构建我们的 Visual Studio 2005 项目,包括使用 InstallShield 打包最终的 exe 和 dll 并将它们放在共享服务器上。

        我们还通过远程登录(从 FinalBuilder)到许多其他平台(Unix/Linux/OpenVMS)并通过在那里运行 makefile 来启动远程构建。

        我们不使用连续构建,但有一个 FinalBuilder Server 可以处理这个问题,并免费提供 FinalBuilder Professional 许可证。

        我们对 FinalBuilder 非常满意,它很容易上手,而且功能强大,可以解决大多数问题。

        【讨论】:

          【解决方案5】:

          我们使用 CruiseControl.Net 和 NAnt(和 Subversion),我们对结果感到满意。

          【讨论】:

            【解决方案6】:

            除了Ant CruiseControl还支持NAntExec

            但如果你真的想走前卫,你可以考虑Rake(约:RakeGetting Started with Rake on .Net)。

            【讨论】:

              【解决方案7】:

              Visual Studio 2005 项目完全可以从命令行运行!做吧

              devenv.com whatever.sln /build 'Release|Win32' /project whatever
              

              (将whatever 替换为您的项目名称,将Release|Win32 替换为您需要的配置和平台)。这可以由 CruiseControl 或 Jenkins 或其他任何东西轻松运行。

              【讨论】:

                【解决方案8】:

                在 Visual Studio 2010 中,微软最终将 Visual C++ 项目文件 (.vcproj) 的格式升级为基于 XML 的 NAnt 克隆格式 MSBuild,现在命名为 .vcxproj。这意味着使用该任务可以轻松编译 C++ 项目。

                如果您可以预见您只会拥有一个小团队和有限数量的构建,我会推荐使用 NAnt 的 TeamCity (http://www.jetbrains.com/teamcity/)。 TeamCity 是一个基于 Java 的 CI 服务器(更容易在 Linux 构建服务器上部署),它支持单独的构建代理(因此您可以有多个 Windows 虚拟机或专用机器运行您的构建)。

                TeamCity 对基于 MSBuild、NAnt 和 Ant 的构建的支持非常出色,它有一个非常漂亮的基于 AJAX 的 GUI,使用起来很有趣,并且允许您从浏览器设置和配置项目。但是,如果您越过免费版的 20 个项目门槛,它就会变得不合理。

                我可以推荐的另一个选项是 Jenkins 与 NAnt、Ant、MSBuild 或 Jenkins 可以支持的其他许多构建系统之一。 Jenkins 是开源的,可以处理无限的项目,例如 TeamCity,它可以在服务器上运行,同时将构建发送到单独的构建代理,并且它具有许多 C++ 工具的插件(想想静态分析、单元测试和打包)。

                Jenkins 的 Web 界面不像 TeamCity 那样方便和美观,但它被广泛使用并且几乎所有东西都有插件。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-12-24
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-10-24
                  • 2016-11-12
                  • 2011-06-07
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多