Visual Studio 自定义构建事件始终执行

2023-12-25

我正在使用odb http://www.codesynthesis.com/products/odb/编译器作为自定义构建工具。即使输入文件没有改变,构建工具也始终在执行。

命令行:

odb -Ic:\menuplan\src\ingredient -o c:\menuplan\src\ingredient  
 -d mysql --hxx-prologue "#include \"odb/traits.hxx\"" --generate-query  
--generate-schema --schema-format separate 
c:\menuplan\src\ingredient\ing_odb_category.hpp`  

输入文件是:
ing_odb_category.hpp.

输出:

ing_odb_category-odb.hxx;ing_odb_category-odb.ixx;ing_odb_category-odb.cxx;ing_odb_category-schema.cxx   

额外的依赖项:
ing_odb_category.hpp

说明:
odb ing_odb_category.hpp

Visual Studio 2010 的输出:

2>------ Build started: Project: vs_2010, Configuration: Debug Win32 ------
2>  odb ing_odb_category.hpp

The odb工具采用ing_odb_category.hpp作为输入并产生ing_odb_category-odb.hxx, ing_odb_category-odb.ixx,ing_odb_category-odb.cxx,ing_odb_category-schema.cxx文件。

我可以连续多次构建解决方案,并且自定义构建事件将始终运行,即使ing_odb_category.hpp文件永远不会改变。

如果头文件发生更改,如何使 Visual Studio 仅执行自定义构建?

从 vcxproj 文件:

<CustomBuild Include="..\ing_odb_category.hpp">
  <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">odb -Ic:\menuplan\src\ingredient -o c:\menuplan\src\ingredient -d mysql --hxx-prologue "#include \"odb/traits.hxx\"" --generate-query --generate-schema --schema-format separate  c:\menuplan\src\ingredient\ing_odb_category.hpp</Command>
  <Command Condition="'$(Configuration)|$(Platform)'=='Debug_Static_Unicode|Win32'">odb -Ic:\menuplan\src\ingredient -o c:\menuplan\src\ingredient -d mysql --hxx-prologue "#include \"odb/traits.hxx\"" --generate-query --generate-schema --schema-format separate  c:\menuplan\src\ingredient\ing_odb_category.hpp</Command>
  <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">odb ing_odb_category.hpp</Message>
  <Message Condition="'$(Configuration)|$(Platform)'=='Debug_Static_Unicode|Win32'">odb ing_odb_category.hpp</Message>
  <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ing_odb_category-odb.hxx;ing_odb_category-odb.ixx;ing_odb_category-odb.cxx;ing_odb_category-schema.cxx</Outputs>
  <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Static_Unicode|Win32'">ing_odb_category-odb.hxx;ing_odb_category-odb.ixx;ing_odb_category-odb.cxx;ing_odb_category-schema.cxx</Outputs>
  <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ing_odb_category.hpp</AdditionalInputs>
</CustomBuild>

环境:

  • 视觉工作室2010
  • Windows 7 - 64 位

Visual Studio 总是构建这些文件,因为它说它们不存在。

使用Visual Studio 项目日志记录 http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspx文章,特别是运行调试视图 http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx显示 Visual Studio 对依赖项使用不同的路径。我没有指定输出文件和依赖项的路径,因此它试图在默认项目目录中找到它们。

此外,Visual Studio 预计只有一个输出文件,根据指定自定义构建工具文章 https://msdn.microsoft.com/en-us/library/hefydhhy.aspx。我提供了所有输出文件名。

Summary

在自定义构建工具窗口中:

  1. 应该只有一个输出文件。
  2. 其他输出文件列在Additional Dependencies slot.
  3. 所有输出文件都应以其位置路径为前缀, 相对或绝对。

有用的构建过程调试辅助工具可以在Visual Studio Project Logging文章,尤其是DebugView应用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio 自定义构建事件始终执行 的相关文章

随机推荐