1

現在、C ++ライブラリをビルドしようとしています。ビルドボタンを押すたびに、すべてのインクルードファイルを特定のディレクトリに移動します。

私が現在持っているのはこれです

<Target Name="CopyToIncludeFiles">
  <Message Text="Copying All '*.h' and '*.hpp' to the include directory" Importance="high">
  </Message>
  <Copy SourceFiles="@(ClInclude)" DestinationFolder="..\HelperLib\x86\include\">
  </Copy>
</Target>

そして、私はDefaultTargetsにターゲットを含めます。

<Project ToolsVersion="4.0" DefaultTargets="Build;CopyToIncludeFiles;" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

再構築を使用している限り、これはすべて正常に機能しますが、ビルドを押しただけでは実行されません。

ビルドまたは再構築のどちらを押しても、これを実行するには何をする必要がありますか?

4

1 に答える 1

2

PreBuild Event単純なコマンドラインコマンドであるため、プロジェクトのプロパティで解決するタスクの方が簡単だと思います。

それでもmsbuildが必要な場合は、BeforeTargets次のように使用できます。

<Target Name="CopyToIncludeFiles" BeforeTargets="Rebuild;Build">
  <Message Text="Copying All '*.h' and '*.hpp' to the include directory" Importance="high" />
  <Copy SourceFiles="@(ClInclude)" DestinationFolder="..\HelperLib\x86\include\"  />
</Target>

タスクを含めるためにプロジェクトDefaultTargetsプロパティを変更しないでください。

また、プロジェクトコードで再コンパイルが必要ない場合(つまり、cpp / hファイルが変更されていない場合)、PreBuildイベントとこのmsbuildタスクの両方が実行されないことに注意してください。

于 2013-03-26T14:10:28.933 に答える