visual-studio - Visual Studio 中的自定义构建规则,具有多个输出

我们有一个使用自定义对象关系映射系统的 C++ 项目,其中的表由 .tbl 文件定义。然后这些通过代码生成器运行,代码生成器为每个生成器创建一个 .h 和一个 .cpp 文件。

我正在尝试在 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”,但我仍然遇到错误。

现在的问题是这些文件是在代码生成器运行时创建的。如果我再次编译,就不会出现错误,因为所有文件都是在第一次编译时创建的。但这使得从新 checkout 中进行干净、自动化的构建变得行不通。

有什么想法吗?

最佳答案

我认为您需要在构建的主要部分指定输出文件(查看 http://msdn.microsoft.com/en-us/library/hefydhhy.aspx 的最后一句话)。可能最简单的方法是在文件存在时添加对文件的引用,然后删除它们并查看代码生成步骤是否按预期运行。

https://stackoverflow.com/questions/7433596/

相关文章:

oop - 实现对象关联基数的模式和实践

php - PHP 中的滚动日志文件

pdf - 打印时将空白页插入 PDF

asp.net - asp.net 中的用户控件 (ascx) 及其可绑定(bind)属性未显示在数

unix - SqLite3 NFS 挂载问题与锁定 - 我可以使用类似 CIFS nobrl 的东

interface-builder - 如何将 "turn off"透明度从 UIView 继承到

sql-server - sql server 中的语言环境感知排序

debugging - Valgrind 在 Fortran 代码中显示未初始化的变量

macos - 什么类型的文件可以在 Mac 上使用 codesign 进行签名?

asp.net - 提交按钮间歇性地在 Chrome 中不执行任何操作