问题
现有不合标准的解决方案
在每个文件上,每次添加文件时,我都可以转到文件设置,将“项目类型”设置为“自定义构建工具”,然后在“自定义构建工具”对话框中,设置命令行参数,设置(硬编码)输出,以及设置(硬编码)其他依赖项。
显然,这是一个较差的解决方案,因为每次您添加自定义类型的新文件时,这都是繁琐且容易出错的工作。
所需的解决方案
我设置了Visual Studio,对于.foo扩展名的任何文件,当.foo文件更改时,它都会运行工具bar.exe,然后再编译CPP代码。
我尝试过的事情
基于此:http://msdn.microsoft.com/en-us/library/3e889s84(v=vs.100).aspx
我试图设置一个.targets和.xml文件。但是,我找不到如何在Visual Studio中显示新的Item Type的方法,也找不到如何神奇地将其应用于.foo类型的每个文件的方法。最重要的是,我还没有弄清楚其中的任何内容如何链接到描述调用bar.exe工具的行为的任何内容。
我试图搜索所有Visual Studio的xml / targets文件,以跟踪现有的项目类型并确定如何将它们转换为实际的构建操作。它总是结束于ItemType的墙,在ProjectItemsSchema中描述了一堆,但是我找不到它们的实现位置或自己的实现方式。
MSDN的文档已完全失败,我想我已经阅读了每一个潜在的相关页面十次,但无济于事。
在visual studio 2008中,我使用.rules文件来处理这种事情,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<VisualStudioToolFile
Name="Foo Build Rules"
Version="8.00"
>
<Rules>
<CustomBuildRule
Name="FooBuild"
DisplayName="FooGen"
CommandLine="..\..\tools\FooGen.exe [inputs]"
Outputs="$(InputName).h"
AdditionalDependencies="*.foo"
FileExtensions="*.foo"
ExecutionDescription="Generating Foos..."
>
<Properties>
</Properties>
</CustomBuildRule>
</Rules>
</VisualStudioToolFile>
但是,此功能在2010年已弃用,我一直无法弄清楚如何用新系统复制它。
救命?
最佳答案
首先将自定义ItemGroup添加到您的项目文件中。
如下所示:
<ItemGroup>
<CustomBuild Include="faq.txt">
<Message>Copying readme...</Message>
<Command>copy %(Identity) $(OutDir)%(Identity)</Command>
<Outputs>$(OutDir)%(Identity)</Outputs>
</CustomBuild>
</ItemGroup>
接下来,创建一个自定义目标,并定义要在构建过程中的何处运行自定义目标。
以下链接将更详细地逐步说明。
希望这可以帮助。
Walk-through: Using MSBuild to Create a Visual C++ Project
How to: Add Custom Build Tools to MSBuild Projects
Note:在当前版本中,IDE不支持创建新规则。出于这个原因,使用通过使用Visual C++的较早版本创建的项目中的规则文件的最简单方法是将项目迁移到当前版本。
关于visual-studio-2010 - 逐步如何在Visual Studio 2010中为给定类型的每个文件添加自定义生成步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13181614/