我们有一个使用自定义对象关系映射系统的C++项目,其中表由.tbl文件定义。然后通过代码生成器运行这些代码生成器,为每个生成.h和.cpp文件。Visual Studio中的自定义构建规则,带有多个输出
我试图让一个自定义生成规则为这方面的工作,在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”,我仍然得到错误。
现在就是当代码生成器运行时创建这些文件。如果我再次编译,我没有错误,因为所有文件都是在第一遍中创建的。但是,它使得从新的结账做起干净,自动化的生成不起作用。
任何想法?
我将输出文件添加到构建的主要部分。我的问题是,如果我将.h和.cpp添加到构建中,并且有一条规则说它可以从.tbl生成.h,它会抱怨它找不到.cpp,如果我有规则说它可以从.tbl生成一个.cpp,它说它找不到.h。由规则包装的工具同时生成,但我似乎无法弄清楚如何配置一个规则来告诉它。 –
从''的文档中,听起来您可以列出以分号分隔的多个文件。 –
sblom