2017-04-12 80 views
0

我想运行构建步骤,查看.h文件,基于某些外部参数添加一些代码,并将生成的文件交给预处理器。如何设置此Visual Studio(2015)自定义构建步骤(工具?)。基本上我想要一个修改头文件的预处理器步骤(C++)

我在项目属性中看到“自定义构建步骤”。它似乎需要一个输出文件。我只是想将结果转发给预处理器。

看起来自定义构建步骤想要执行1次处理,而不是按文件或按文件类型。

问题是我不知道如何发送我的外部可执行文件当前正在处理的文件(例如“HelloWorld.cpp”)。 $(InputName)和%(Filename)是空白的,文档说它已被弃用。如何将文件名发送到我的外部可执行文件?

但即使我得到那个工作,我不想设置此每个文件。我希望所有的头文件都经过这个过程。

任何想法?

我看:

https://msdn.microsoft.com/en-us/library/dd293663.aspx?f=255&MSPPError=-2147217396

https://msdn.microsoft.com/en-us/library/hefydhhy(v=vs.90).aspx

https://msdn.microsoft.com/en-us/library/ff770593(v=vs.140).aspx

工作在Windows上调试,64配置。

+0

我不认为这会工作。 A * Build Step *就是这样:它*构建*某些东西,即给定一些输入文件,它构造*不同*文件。目的绝对不是修改现有文件。 (它可能会这样做,但不是以可靠的方式。) – j6t

+0

在他们的示例中: lexer $(InputPath)。\ $(InputName).c 它们转发当前正在构建的文件。 2015年的文档说InputName已被删除,但没有其他选择。有谁知道至少如何获得正在处理的文件的名称? – SolarisPol

回答

0

首先,不,您不能修改文件并将结果传递到下一个阶段(我可以看到)。我需要某种Program Transformation System

所以我需要一个中间文件。该文件必须添加到项目中,即使它被代码生成器覆盖。我可以将C++头文件与一个自定义构建工具相关联,并且它们都将在自定义构建步骤中指定的构建阶段中逐个调用。自定义构建工具将修改中间文件,并且一切正常。

正在处理的当前文件的VS 2015名称是%(文件名)。在较早的版本中,它是$(ProjectName)和$(InputName)。

相关问题