我已经厌倦了手动重复这些步骤。我该如何自动化所有这些步骤呢?
我使用的是Visual Studio 2015。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<CPPProject>your_cpp_project.sln</CPPProject>
<powershell_execute>powershell.exe -executionpolicy bypass -command</powershell_execute>
<UtilityScript>utility.ps1</UtilityScript>
</PropertyGroup>
<Target Name="Build">
<Exec Command="msbuild.exe $(CPPProject) /p:Configuration=Release /p:Platform=Win32" />
<Exec Command="msbuild.exe $(CPPProject) /p:Configuration=Release_x64 /p:Platform=x64" />
<Exec Command="$(powershell_execute) $(UtilityScript) args" />
</Target>
<Target Name="Clean">
<!-- DO YOUR CLEANING HERE-->
</Target>
</Project>
Jenkins : 安装后,Jenkins 将作为 Windows 服务运行,其中包括嵌入式 HTTP 服务器。您可以通过 localhost:8080 快速使用浏览器访问它。Jenkins 是另一个独立的主题,但我发现它非常方便,可以自动化命令并将其组织为作业定义。
额外的扩展(PowerShell 和 MSBuild 扩展):由于您可以从 MSBuild 或 Jenkins 中调用命令,因此您总是可以使用 PowerShell(在其中还可以内联 C# 代码,如果需要)。我发现这在我需要快速轻松地实现自定义逻辑时非常有用,例如在每个发布之前增加小版本等。请注意,也有扩展包可以丰富 MSBuild XML 的功能。
Jenkins 和 TFS 的缺点作为替代方案:Jenkins 通常非常方便。在 Windows 上的主要缺点是很难给控制台输出添加颜色,但可以解决。总而言之,我发现它非常稳定。另一方面,TFS已经是 Microsoft 的解决方案,我不确定其许可选项,但它也可以作为 Jenkins 的替代方案。在这种情况下,您将更多地依赖于 MSBuild XML 文件。对我来说,TFS 2013 的缺点之一是,它在网络操作中并不总是准确工作,因为存在一些与 Microsoft 的 http.sys 冲突,这非常令人失望。但是,我还没有检查 TFS 2015。
一般建议:由于它是一个中央解决方案,我强烈建议将大多数逻辑都实现在 MSBuild XML 文件中,因为这将使您的构建系统也很容易通过命令行调用,并且易于在 Jenkins、TFS 或其他系统之间切换。
其他注意事项:
如果只是 MSVC 2015,则可以避免安装 Visual Studio,因为 MSVC2015 有一个独立的构建:https://blogs.msdn.microsoft.com/vcblog/2015/11/02/announcing-visual-c-build-tools-2015-standalone-c-tools-for-build-environments/
如果您选择 Jenkins,第一件要处理的事情就是访问 Visual Studio 命令提示符。在这种情况下,请参阅此内容:How do I write a build batch script that runs vcvars32.bat, and then continues with the build?