6

カスタム ビルド ステップを使用して、C++ プロジェクトのビルド済みDLL (つまり$(TargetPath) ) をディスク上の別の場所にコピーしています。

ソース DLL がターゲット DLL よりも新しい場合にのみ VS がステップを実行することを期待して、カスタム ビルド ステップの をコピー先の DLL パスと - コピーするファイルに設定OutputAdditional Dependenciesました。$(TargetPath)

ただし、プロジェクトをビルドするたびに、VS はカスタム ビルド ステップを実行するため、コピーを実行する必要がないと判断できないようです (ソース DLL $(TargetPath) は変更されていません)。ステップの構成が間違っているに違いありません。

どのような設定をすると、希望する動作が得られますか (つまり、プロジェクトがビルドされ、カスタム ビルド ステップが成功した場合、VS はプロジェクトを最新と見なします)。

VS 出力ウィンドウに、Visual Studio がビルド ステップをトリガーするファイルとして vcxproj を使用していることを暗示しているように見えるこの行が表示されます。$(TargetPath)を使用したい:

Input file "MyProject.vcxproj" is newer than output file "c:\custom\build\step\copies\the\dll\here.dll".

(追記: 最初はビルド後のステップを使用していましたが、これが失敗した場合、VS はプロジェクトが正常にビルドされたと見なし、2 回目のビルド時に再度実行しません)

4

2 に答える 2

0

指定した出力ファイルのタイムスタンプが copy コマンドの後に更新されていることを確認してください (Unix では touch コマンドを使用します)。

コマンドラインでこれを使用できます:

cd c:\custom\build\step\copies\the\dll <br>
copy /b /y YOUR_SOURCE_DIRECTORY/here.dll .<br>
copy /b /y here.dll+,,
于 2015-03-20T13:13:51.737 に答える