2013-10-18 57 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+,, 
相关问题