回答

9

差别很大。自定义构建步骤允许您指定依赖项和输出。这允许构建系统在执行该步骤时确定并且当输出已经是最新时跳过它。生成后事件是总是在项目需要构建并且其时序已修复时执行。

+0

re:**生成后事件总是执行** >><作为测试,我在我的*生成后事件*中添加了'echo HELLO WORLD'。 (1)按照预期显示“HELLO WORLD”。 (2)如果我再次右键单击我的项目上的* Build * ...'HELLO WORLD'不会显示在* Visual Studio Output,Build窗口的输出*中。 (3)执行*清理*后面*生成* ...和'HELLO WORLD'再次出现。所以看起来,在Visual Studio 2012中(* Platform Tooolset *在项目配置中设置为v90)... **后构建事件仅在实际构建时执行。**我错过了什么吗? – Pressacco 2013-06-19 18:14:54

0

似乎@Hans回答得到它切换,主要区别是,如果没有文件需要建立,没有建立事件会发生。


从MSDN文档:

生成事件和自定义生成以下顺序与其他构建步骤一起运行步骤:

Pre-Build event 
Custom build tools on individual files 
MIDL 
Resource compiler 
The C/C++ compiler 
Pre-Link event 
Linker or Librarian (as appropriate) 
Manifest Tool 
BSCMake 
Custom build step on the project 
Post-Build event 

的项目和岗位的自定义生成步骤生成事件在所有其他构建过程完成后按顺序运行。

只有构建成功达到构建过程中的那些点时,才会执行构建事件。如果在构建中发生错误,则不会发生构建后事件;如果错误发生在链接阶段之前,则不会发生预链接或生成后事件。另外,如果不需要链接文件,则不会发生预链接事件。预链接事件在不包含链接步骤的项目中也不可用。 如果不需要构建文件,则不会发生构建事件。

从Visual Studio C++开发环境中,有三种基本方式来定制生成过程:

自定义生成步骤 自定义生成步骤是与项目相关的生成规则。自定义构建步骤可以指定要执行的命令行,任何其他输入或输出文件以及要显示的消息。有关更多信息,请参见如何:向MSBuild项目添加自定义构建步骤。

自定义构建工具 自定义构建工具是与一个或多个文件关联的构建规则。自定义构建步骤可以将输入文件传递到自定义构建工具,从而生成一个或多个输出文件。例如,MFC应用程序中的帮助文件是使用自定义构建工具构建的。有关更多信息,请参阅如何:将自定义生成工具添加到MSBuild项目并指定自定义生成工具。 构建事件

构建事件让您自定义项目的构建。有三个构建事件:预构建,预链接和构建后。构建事件可让您指定在构建过程的特定时间发生的操作。例如,在项目完成构建后,您可以使用构建事件向regsvr32.exe注册文件。有关更多信息,请参阅指定构建事件。

相关问题