【问题标题】:How can I force the C++ platform in MSBuild?如何在 MSBuild 中强制使用 C++ 平台?
【发布时间】:2014-01-21 04:20:19
【问题描述】:

我有一个必须构建为 32 位的程序。它附带一个 x64 应用程序。结果,有一个安装程序有点麻烦。

安装程序使用wixproj 构建,必须使用/p:Platform=x64 构建——但vcxproj 需要构建为x86。

我尝试通过显式设置将Platform 强制为x86Win32

<PropertyGroup>
  <Platform>Win32</Platform>
</PropertyGroup>

但似乎在构建时传递给wixproj“wins”的命令行开关。

项目文件是否可以通过某种方式强制PlatformWin32,无论命令行中指定什么?

(对于csproj,我能够做到这一点:

<PropertyGroup>
  <PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>

但这似乎对 C++ 没有任何影响)

【问题讨论】:

  • 既然你问这个,我假设你没有单独构建它们——那么你是如何构建这些项目的?它们是单一解决方案的一部分吗?您使用主构建文件?您能否展示调用构建它们的 msbuild 部分?
  • @stijn: msbuild foo.wixproj /p:Platform=x64 /p:Configuration=Release

标签: c++ visual-studio msbuild vcxproj


【解决方案1】:

终于想通了。 MSBuild 有一个设置TreatAsLocalProperty,它允许项目文件覆盖任何变量,该变量进入文件开头的Project 节点。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" 
         ToolsVersion="4.0"
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
         TreatAsLocalProperty="Platform"> <!-- !!! -->
  <PropertyGroup>
     <Platform>Win32</Platform>
  </PropertyGroup>
  <!-- Now Platform is Win32 no matter what! -->
</Project>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 2012-05-04
    • 1970-01-01
    • 2020-01-19
    • 2014-04-22
    • 1970-01-01
    • 2019-08-15
    • 2016-01-06
    相关资源
    最近更新 更多