在针对多个平台的解决方案中构建Visual Studio C ++项目

时间:2020-01-20 16:28:09

标签: .net visual-studio visual-c++ build msbuild

我有一个Visual Studio解决方案,其中包含多个C#项目和一个C ++项目。

C ++项目已正确配置为针对x64和win32构建(具有单独的输出目录,为32和64引用了正确的二进制文件,依此类推),并且默认配置为x64。为任何CPU配置了C#项目。

在构建整个解决方案时,如何配置我的解决方案以同时为x64和Win32构建C ++项目?

P.S .:在这种情况下,批处理构建无法完成,因为我需要以任何人克隆存储库的方式进行配置,而无需进行任何其他设置即可

1 个答案:

答案 0 :(得分:1)

如何配置我的解决方案以为两个x64都构建C ++项目 和整个构建解决方案时使用win32?

请使用批处理构建来构建您的解决方案。

1):首先右键单击您的解决方案,然后选择批处理构建

2)其次,检查要构建的C ++项目。然后,您可以检查项目的64位和32位,还可以为 Configuration 选择DebugRelease。最后,单击“生成”或“重建”以同时生成不同版本的输出文件。

enter image description here

3)完成后,请打开解决方案文件夹。在我这边,DebugRelease文件夹仅用于 32位,而x64文件夹仅用于 64位

enter image description here

更新1

由于您不想配置VS设置然后使用批处理构建,因此我认为您可以在xxxx.vcxproj文件中使用自定义构建目标。

将这些目标添加到整个解决方案的所有C ++项目的xxxx.vcxproj中。

<Target Name="BuildFunction" AfterTargets="Build">
    <MSBuild Condition="'$(Platform)'=='Win32'" Projects="$(MSBuildProjectFile)" Properties="Platform=x64;PlatFormTarget=x64" RunEachTargetSeparately="true"  />
    <MSBuild Condition="'$(Platform)'=='x64'"   Projects="$(MSBuildProjectFile)" Properties="Platform=Win32;PlatFormTarget=x86" RunEachTargetSeparately="true" />
  </Target>

  <Target Name="CleanAll" AfterTargets="Clean">
    <MSBuild Condition="'$(Platform)'=='Win32'" Projects="$(MSBuildProjectFile)" Targets="Clean" Properties="Platform=x64;PlatFormTarget=x64" RunEachTargetSeparately="true"  />
    <MSBuild Condition="'$(Platform)'=='x64'"   Projects="$(MSBuildProjectFile)" Targets="Clean" Properties="Platform=Win32;PlatFormTarget=x86" RunEachTargetSeparately="true" />

  </Target>

这些目标取决于BuildClean目标。因此,当您构建项目时,它们将始终在以后执行,并将项目构建到其他版本中。

此外,此方法与您的解决方案相关,因此当其他人克隆您的解决方案时,直接从您的脚本进行构建,或在VS IDE中单击 Build ,然后您会看到x64和解决方案中文件的x86版。

希望它可以为您提供帮助。

相关问题