2

カスタムビルドステップでファイルをビルドするときに、プロジェクトのインクルードディレクトリのリストを取得する可能性があるかどうかを知りたいです。

次の状況を想像してみてください。私のプロジェクトはA.cppB.cppC.blahで構成されています。「C/C++」->「一般」->「追加のインクルードディレクトリ」フィールドの下のプロジェクトプロパティで、 A.cppおよびB.cppに使用されるインクルードディレクトリのリストを指定しました。ここで、C.blahの場合、カスタムビルドツールを指定して、「コマンドライン」->「mytool.exeC.blah -I * Direcotries?*-oC.obj」に書き込みます。このステップでC/C ++用に指定されたインクルードディレクトリのリストを取得するにはどうすればよいですか?「マクロ」をクリックすると、そのようなマクロはなく、インクルードの完全なリストが表示されます。

この目標を達成する可能性を知っている人はいますか?

4

1 に答える 1

4

私は答えを見つけたと思いますが、不完全です。

プロパティシートで次のように指定できます。

<PropertyGroup>
    <ProjectIncludeDir>@(ClCompile->'%(AdditionalIncludeDirectories)')</ProjectIncludeDir>
</PropertyGroup>

これにより、マクロ$(ProjectIncludeDir)が、インクルードディレクトリのリストを含むカスタムビルドステップでも使用できるようになります。

このアプローチの問題点は、このマクロでは文字列操作ができなくなったことです。たとえば、次のことを検討してください。

<ProjectIncludeDirDot>$(ProjectIncludeDir.Replace(';',','))</ProjectIncludeDirDot>

これにより、@(ClCompile->'%(AdditionalIncludeDirectories)')のマクロ$(ProjectIncludeDirDot)が生成されます。変換はマクロ評価の後に評価されるようですが、これはその置換を破ります。誰かがより良い解決策を知っているなら、お願いします...

于 2011-10-05T09:55:17.847 に答える