0

プロジェクト管理を軽減するために、VS2010/MSBuild ビルドの簡単なルールを設定しようとしています。「ExcludedFromBuild」プロパティに関連しています。

ルールは、ファイル名にプラットフォーム名が含まれていない場合、ExcludedFromBuild = true です。

すなわち-

Win32Math.cpp と Win64Math.cpp があります。Win32 プラットフォームを構築しているときにのみ、Win32Math をコンパイルしたいと考えています。Win64 についても同様です。

これをファイルごとに設定するのは簡単ですが、少し面倒です。対象とするプラットフォームが 4 つあります。ファイルを追加するたびに、各ターゲットのプロパティを更新する必要があります。ルールをグローバルにしたいので、プラットフォーム ファイルを追加するたびにセットアップを行う必要はありません。

これは可能ですか?

4

2 に答える 2

1

可能ですが、固有のアイテム メタデータを s でテストすることはできません<ItemDefinitionGroup>。唯一知られている方法は、ターゲットを使用することです。

<Target Name="RemoveNonPlatformItems" BeforeTargets="ClCompile">
    <ItemGroup>
        <ClCompile>
            <ExcludedFromBuild Condition="!$([System.String]::Copy(%(FileName)).Contains($(Platform)))">true</ExcludedFromBuild>
        </ClCompile>
    </ItemGroup>
</Target>

またはさらに良い:

<Target Name="RemoveNonPlatformItems" BeforeTargets="ClCompile">
    <ItemGroup>
        <ClCompile Remove="%(Identity)" Condition="!$([System.String]::Copy(%(FileName)).Contains($(Platform)))" />
    </ItemGroup>
</Target>
于 2013-02-26T12:47:02.537 に答える
1

http://msdn.microsoft.com/en-us/library/bb629392.aspxのようなものには、アイテム定義グループを使用できますが、特定の状況はよくわかりません。おそらく、プラットフォームに一致するアイテムのファイル名に基づいてメタデータを設定する必要があります。

これは、アイテム メタデータでプロパティ関数を使用する方法を示しています。メタデータ値でアイテム関数を使用する

于 2012-11-09T22:56:32.720 に答える