VC PlusPlus:MSBuild Condition要素
概要
Condiotion要素はプログラムで表現するところのif文のような役割をします。Condition要素の値は比較演算で、比較が成り立てばタグの指定を有効にするというものです。
比較
例えば、AfterLinkTargetsプロパティに何らかの値も設定されていないなら、タグで指定した値を設定するみたいな指定をする場合は以下のように比較演算を使います。
<PropertyGroup>
<AfterLinkTargets>$(AfterLinkTargets)</AfterLinkTargets>
<AfterLinkTargets Condition="'$(AfterLinkTarget)'==''">$(AfterLinkTarget);MyAfterLinkTarget</AfterLinkTargets>
</PropertyGroup>
<Target Name="Message Text" AfterTargets="build">
<Message Text="$ (AfterLinkTarget) = $(AfterLinkTarget)" />
</Target>
比較演算は == と != が使えます。== は両側に指定した値が同じ値ならタグを有効にし =! は両側に指定した値が異なるならタグを有効にするという意味になります。但し、右辺値が true や false のようなブール値なら、まったく同じか、まったく逆の値かを判断します。比較する対象の値は両側にシングルクォーテーションで囲った値を指定します。
つまり、$(boolTrue) = true という状態で
'$(boolTrue)' != 'false' という指定なら true の値が設定されているときだけ有効で
$(Str) = "String" という状態で
'$(Str)' != 'false' と指定した場合は $(str) に true が設定されていないので、無効になります。