「VC PlusPlus:MSBuild バッチ処理変数」の版間の差分
16行目: | 16行目: | ||
%(Element) | %(Element)というバッチ処理がアイテムグループBatchの中に設定されたことになり、Batchの中のバッチとして扱う範囲の呼び出しができます。Includeに示した値はファイルなので、プロジェクトで読み込むには、vcxprojファイルのあるフォルダと同じ階層に1や2という名前のファイルが必要になります。例えば以下のような使い方ができます。 | ||
60行目: | 60行目: | ||
と表現できることになります。 | と表現できることになります。 | ||
さらに、このようにBatchの中のという指定をするために使った@(Batch->' ')を以下のように記述することもできます。 | |||
<syntaxhighlight lang="xml" highlight="7"> | |||
<Target Name="BatchTarget"> | |||
<ItemGroup> | |||
<Batch Condition=" '%(Element)' == 'en-US' "> | |||
<ConditionEnUSBatch>true</ConditionEnUSBatch> | |||
</Batch> | |||
</ItemGroup> | |||
<Message Text="%(Batch.Element)" Importance="High" /> | |||
</Target> | |||
</syntaxhighlight> | |||
出力結果 | |||
<syntaxhighlight lang="text"> | |||
en-US | |||
ja-JP | |||
</syntaxhighlight> | |||
このように、%(Batch.Element)とすると、バッチ処理の機能が働き、その要素の分だけメッセージ出力処理が繰り返されます。@(Batch->' ')の中にバッチがあった時はその中のメッセージが;区切りで繰り返される感じになります。 | |||
[[VC PlusPlus:MSBuild#関連記事|VC PlusPlus:MSBuild]]に戻る。 | [[VC PlusPlus:MSBuild#関連記事|VC PlusPlus:MSBuild]]に戻る。 |
2024年2月9日 (金) 21:58時点における版
概要
バッチ処理は%(Batch)のように記述する変数です。
バッチ処理の定義の基礎
例えば、以下のように書いた<ItemGroup>~</ItemGroup>があったとしたら
<ItemGroup>
<Batch Include="1" Element="en-US" />
<Batch Include="2" Element="ja-JP" />
</ItemGroup>
%(Element)というバッチ処理がアイテムグループBatchの中に設定されたことになり、Batchの中のバッチとして扱う範囲の呼び出しができます。Includeに示した値はファイルなので、プロジェクトで読み込むには、vcxprojファイルのあるフォルダと同じ階層に1や2という名前のファイルが必要になります。例えば以下のような使い方ができます。
<Target Name="BatchTarget">
<ItemGroup>
<Batch Condition=" '%(Element)' == 'en-US' ">
<ConditionEnUSBatch>true</ConditionEnUSBatch>
</Batch>
</ItemGroup>
<Message Text="Batch = @(Batch->'%(Element)')" Importance="High" />
</Target>
出力結果
Batch = en-US;ja-JP
この時、実は%(Element)だけではなく、%(Identity)というものもBatchの中設定されていてIncludeという要素の値に対応しています。%(Element)がen-USを示す内容のときだけConditionの中で示された比較が成立し、%(ConditionEnUSBatch)もBatchの中にできていて、以下のようにして出力することができます。
<Target Name="BatchTarget">
<ItemGroup>
<Batch Condition=" '%(Element)' == 'en-US' ">
<ConditionEnUSBatch>true</ConditionEnUSBatch>
</Batch>
</ItemGroup>
<Message Text="Batch = {@(Batch->' Element = %(Element), Identity = %(Identity), ConditionEnUSBatch = %(ConditionEnUSBatch)')}" Importance="High" />
</Target>
出力結果
Batch = { Element = en-US, Identity = 1, ContitionEnUSBatch = true; Element = ja-JP, Identity = 2, ContitionEnUSBatch =}
と表現できることになります。
さらに、このようにBatchの中のという指定をするために使った@(Batch->' ')を以下のように記述することもできます。
<Target Name="BatchTarget">
<ItemGroup>
<Batch Condition=" '%(Element)' == 'en-US' ">
<ConditionEnUSBatch>true</ConditionEnUSBatch>
</Batch>
</ItemGroup>
<Message Text="%(Batch.Element)" Importance="High" />
</Target>
出力結果
en-US
ja-JP
このように、%(Batch.Element)とすると、バッチ処理の機能が働き、その要素の分だけメッセージ出力処理が繰り返されます。@(Batch->' ')の中にバッチがあった時はその中のメッセージが;区切りで繰り返される感じになります。