2013-10-18 50 views
4

我使用的是自定義生成步驟複製內置DLL(即$(TARGETPATH))一個C++項目到磁盤上的不同位置。的Visual Studio:如何只運行自定義生成步驟時「必要的」

我已經設置了自定義生成步驟到目的地DLL的路徑的Output,並Additional Dependencies$(TargetPath) - 文件我拷貝,希望對VS將僅運行步驟如果源DLL較新比目標DLL。但是,每次構建項目時,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". 

(PS:我補充一下,我最初使用後生成步驟,但如果失敗,VS關於項目的順利建成,並當你建立第二次時不再運行它)

回答

0

我認爲你想要的是增量建築。

這裏是它的快速HOWTO:http://msdn.microsoft.com/en-us/library/ms171483.aspx

的基礎是你需要提供一個輸入給目標以如此的MSBuild可以映射輸入,輸出和跳過目標輸出是否更新/同歲作爲輸入。

+1

我不這麼認爲。我在Visual Studio項目中,所以構建目標已經被定義爲構建的DLL。 – mackenir

0

確保您指定的輸出文件的時間戳在複製命令後更新(在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+,, 
相關問題