两个项目设置都允许我执行自定义命令。每个的好处或缺点是什么?
答案 0 :(得分:10)
差异很大。自定义构建步骤允许您指定依赖项和输出。这允许构建系统确定何时执行步骤并在输出已经是最新时跳过它。当项目需要构建并且其时间是固定的时,后期构建事件始终执行。
答案 1 :(得分:2)
似乎@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注册文件。有关更多信息,请参阅指定构建事件。