我们有一个使用自定义对象关系映射系统的C++项目,其中表格是由.tbl文件定义的。然后这些文件会通过代码生成器运行,为每个表格创建.h和.cpp文件。
我正在尝试在Visual Studio 2008和2010中为此设置自定义构建规则。
以下是我目前拥有的内容:
问题在于依赖关系。当我在干净的检出上运行构建时,其中没有任何文件存在,我会收到“无法打开包含文件”错误,针对这个规则生成的.h文件。
我尝试将“输出”更改为“ $(InputName) .h”,但仍然出现错误。
现在问题在于当代码生成器运行时,这些文件是在创建的。如果我再次编译,我就不会出现错误,因为所有文件都在第一遍创建了。但这使得从新的检出进行干净、自动化的构建变得不起作用。
有什么想法吗?
我正在尝试在Visual Studio 2008和2010中为此设置自定义构建规则。
以下是我目前拥有的内容:
<?xml version="1.0" encoding="utf-8"?>
<VisualStudioToolFile
Name="z_dbbld"
Version="8.00"
>
<Rules>
<CustomBuildRule
Name="z_dbbld"
DisplayName="z_dbbld"
CommandLine="$(SolutionDir)\tools\z_dbbld $(InputName)"
Outputs="$(InputName).cpp"
FileExtensions="*.tbl"
ExecutionDescription="z_dbbld $(InputName)"
>
<Properties>
</Properties>
</CustomBuildRule>
</Rules>
</VisualStudioToolFile>
问题在于依赖关系。当我在干净的检出上运行构建时,其中没有任何文件存在,我会收到“无法打开包含文件”错误,针对这个规则生成的.h文件。
我尝试将“输出”更改为“ $(InputName) .h”,但仍然出现错误。
现在问题在于当代码生成器运行时,这些文件是在创建的。如果我再次编译,我就不会出现错误,因为所有文件都在第一遍创建了。但这使得从新的检出进行干净、自动化的构建变得不起作用。
有什么想法吗?
<CustomBuildRule Outputs>
的文档中可以看出,你可以用分号将多个文件列在一起。 - sblom