构建C ++解决方案

时间:2008-11-17 20:10:11

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

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

  • 监视Subversion存储库以获取代码更改并安排构建
  • 来自Subversion的结帐代码并运行单元测试
  • 提供有关构建成功和先前构建的更改的某种报告

我最初一直在寻找使用CruiseControl和Ant。有更好的解决方案吗?也许是CruiseControl.Net和NAnt?

8 个答案:

答案 0 :(得分:2)

NAnt需要相当多的工作才能有效地构建C ++。它确实是一个完整的.NET构建系统。我们正在为四个C ++平台和一套.NET工具构建我们的标题,并且需要一段时间才能满足我们的需求。例如,NAnt的C ++依赖性分析非常破碎,我们必须编写自己的。它有很多性能问题我们不得不去解决它。

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

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

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

在我现在的公司,我们选择了NAnt,因为我们不想为团队中的每位工程师购买FB。我们也不喜欢FB是如何闭源的。所以我们100%Nant并且喜欢它。花了一些时间才把它变成了形状!

答案 1 :(得分:2)

由于没有人提到,詹金斯是一个很好的CI,并且变得越来越普遍(免费也不会受到伤害):

http://jenkins-ci.org/

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

答案 2 :(得分:0)

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

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

SVN也得到了完全支持。

答案 3 :(得分:0)

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

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

我们不使用连续版本,但有一个FinalBuilder服务器可以处理它,并免费获得FinalBuilder Professional许可证。

我们对FinalBuilder非常满意,它很容易掌握并且足够强大以解决大多数问题。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

除了Ant CruiseControl之外,还支持NAntExec

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

答案 6 :(得分:0)

Visual Studio 2005项目完全能够从命令行运行!只是做

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

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

答案 7 :(得分:0)

在Visual Studio 2010中,Microsoft最终将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的网络界面不如TeamCity那么方便和美观,但它被广泛使用并且几乎可以插件。