2014-01-21 73 views
0

我有一個程序,必須建立爲32位。它隨附一個x64應用程序。因此,有一個安裝程序會有點麻煩。如何強制MSBuild中的C++平臺?

安裝程序使用wixproj構建,必須使用/p:Platform=x64構建 - 但vcxproj需要構建爲x86。

我試圖迫使Platformx86Win32通過顯式地設置:

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

但現在看來,建設時得到了傳遞給wixproj「贏」的命令行開關。

無論命令行中指定什麼,項目文件都可以強制PlatformWin32嗎?

(用於csproj我能做到這一點:

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

但不會對任何C++的影響似乎)

+0

既然你問我這個假設你不是單獨構建它們 - 那麼你是如何構建這些項目的?他們是單一解決方案的一部分嗎?你使用主構建文件?你可以展示構建它們的msbuild部分嗎? – stijn

+0

@stijn:'msbuild foo.wixproj/p:Platform = x64/p:Configuration = Release' –

回答

2

終於想通了這一點。 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>