10

两个项目设置都允许我执行自定义命令。各自的优点或缺点是什么?

4

2 回答 2

11

巨大差距。自定义构建步骤允许您指定依赖项和输出。这允许构建系统确定何时执行该步骤并在输出已经是最新的时跳过它。当项目需要构建并且其时间固定时,始终会执行构建后事件。

于 2010-10-04T15:49:55.053 回答
5

似乎@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

项目上的自定义构建步骤和构建后事件在所有其他构建过程完成后依次运行。

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

在 Visual Studio C++ 开发环境中,可以通过三种基本方式自定义构建过程:

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

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

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

于 2017-01-18T15:03:41.230 回答