我正在为自动构建过程奠定基础,并且我正在努力确保我开始走正确的道路。我们的代码库是托管/非托管C ++的混合体。托管部分使用.NET 2.0,所有项目都是Visual Studio 2005解决方案的一部分。
现在我正在看NAnt,但我无法弄清楚如何执行构建。当我尝试使用标记构建时,它会发出错误:
不支持Microsoft Visual Studio.NET 2005解决方案。
我觉得我只是从错误的方向接近这个问题。有人能指出我正确的吗?
P.S。我还想在构建过程中运行doxygen,但我认为无论我选择哪种工具都可以让我至少将它作为shell命令运行。
答案 0 :(得分:3)
MSBuild出了什么问题?你的所有项目都已经使用它,它是一个很好的产品,它是免费的。
答案 1 :(得分:2)
自VS003,VS2005以及VS2008以来我们一直使用NAnt(虽然VS2008和.net 3.5需要最新版本的NAnt 0.86+)所以回答你的第一个问题,是的,NAnt会正常工作。
这是一个可以帮助您入门的模板:
<?xml version="1.0"?>
<project name="Test Build" default="build" xmlns="http://nant.sf.net/release/0.85-rc4/nant.xsd">
<property name="target" value="rebuild" overwrite="false" />
<property name="configuration" value="debug" overwrite="false" />
<property name="projectName" value="MyProject.sln"/>
<target name="build" description="Build all targets.">
<call target="build.MyProject"/>
</target>
<target name="build.MyProject">
<exec program="MSBuild" failonerror="true" commandline="/t:${target} /p:Configuration=${configuration} ${projectName}" />
</target>
</project>
最后确保在运行VS2005的构建时正确设置了您的环境:
的build.bat:
call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86
"C:\Program Files\NANT\bin\NAnt.exe" -t:net-2.0 -logfile:buildlog.txt %*
答案 2 :(得分:1)
想想看,MSBuild for VS2005(8.0)不完全支持VC ++。根据项目组合,可能会遇到使用MSBuild的问题,因为它直接调用VCBuild本机项目(可以在msdn forums中看到)。
因此,根据项目,MSBuild或VCBuild应该可以解决问题。要保持在NAnt中,可以使用exec任务直接使用MSBuild或VCBuild。
如果在VS2008(.NET 3.5框架)中,MSBuild确实有VCBuild task。然后,您可以使用NAnt的最新(.86 beta 1版本),并结合NAntContrib(提供msbuild任务)获得3.5支持。
答案 3 :(得分:0)
你可以使用c ++的巡航控制:
http://confluence.public.thoughtworks.org/display/CC/UsingCruiseControlWithCplusPlus
我们使用make / cron和一些自制脚本进行跨平台构建,它完成了工作(包括运行单元测试) - 虽然报告有点粗糙
答案 4 :(得分:0)
Kinook有一款名为Visual Build的好产品可能满足您的需求。