自定义构建步骤和后期构建事件有什么区别?

10

这两个项目设置都允许我执行自定义命令。它们各有优缺点吗?


2个回答

11

区别很大。自定义构建步骤允许您指定依赖关系和输出,从而使构建系统能够确定何时执行该步骤,并在输出已经是最新的情况下跳过它。后构建事件始终在需要构建项目时执行,其时间是固定的。


1
关于后构建事件总是被执行的问题:我添加了echo HELLO WORLD到我的后构建事件中进行测试。(1)如预期一样,HELLO WORLD被显示出来。(2)如果我只是右键单击项目再次构建... HELLO WORLD不会在Visual Studio输出, 显示生成窗口的输出中显示。(3)执行清理然后构建... HELLO WORLD再次出现。因此,在Visual Studio 2012(使用项目配置中设置为v90的平台工具集)中,后构建事件仅在实际构建时才会执行。我有什么遗漏吗? - Pressacco

6

似乎@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注册文件。有关更多信息,请参阅指定构建事件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接