値の末尾に貼り付けなぜ
は、だから私は理解していないものがあります変数(プロパティ、項目、メタデータなど)はMsBuildでは自動的に継承されませんが、代わりに同じ名前の新しい宣言が前の値overrideに継承されます。だから、が付加されません%(AdditionalIncludeDirectories)場合AdditionalIncludeDirectoriesの新しい値がちょうどだろう.... \ JPEG; .... \ JPEG \ SIMD部分とコンパイラがすることができません
表示されているようなプロパティページは、テキストファイルエディタでプロジェクトファイルを開くと簡単に確認できるmsbuildのユーザーインターフェイスですので、ここでは何が起こるかの架空のサンプルがありますMsBuild:
<!--Somewhere in the msbuild files with compiler options-->
<ItemGroup>
<AdditionalIncludeDirectories Include="$(VCInstallPath)\include"/>
</ItemGroup>
上記のファイルのコードは、最終的にpこれで、コンパイラのインクルード検索パスにディレクトリを追加します。あなたはその後、AdditionalIncludeDirectoriesの新しい値がちょうどです.. \ JPEG
<ItemGroup>
<AdditionalIncludeDirectories Include="..\jpeg"/>
</ItemGroup>
を書きたいとしよう。値がに展開されるように、我々は.. \ JPEGではなく
<ItemGroup>
<AdditionalIncludeDirectories Include="..\jpeg;%(AdditionalIncludeDirectories)"/>
</ItemGroup>
を使用する理由である; $(VCInstallPath)\が含まれます。
関連のない発言:通常、そのようなファイルごとにディレクトリを含めるように宣言するべきではありません。 jpegインクルードパスが必要な2番目のファイルがあるとしたら、自分自身を繰り返して同じことを書き直す必要があります。プログラミングで自分を繰り返すことは、ほとんど常に間違っています。プロジェクトレベルでインクルードパスを宣言すると良いスタートになります。プロジェクト間で同じパスを繰り返したくない場合は、property sheetsを参照してください。
それが後で変更されると、その変更は1か所でのみ行われ、その変更はそのマクロを使用するすべての場所に自動的に反映されます。 –
マクロが何をしているかを説明しているように聞こえます。この状況で、マクロ%(AdditionalIncludeDirectories)がどこかで使用された場合、返される値には、マクロ自体の名前が最後に含まれます。どうして? – comenica