配置VS使预编译脚本在头文件更改时重新运行?

4

我在VS2010的编译中有一个Perl脚本,使用多个头文件作为输入自动生成一个头文件。

换句话说,script.pl读取a.h、b.h、c.h,生成z.h。

我该如何设置依赖关系,以使得每当一个输入头文件发生更改时,都会重新运行这个脚本?

1个回答

1

我不知道是否可以基于依赖关系/文件系统检查自动重新运行它,但是您肯定可以在项目或解决方案中添加自定义预构建步骤来直接调用perl脚本。在VS2010中,转到“项目”菜单,选择“属性...”,然后转到“生成事件”选项卡。在预构建事件命令行框中,键入调用script.pl的命令行。

请查看MSDN文档以获取有关构建路径的一些有用的宏和快捷方式。此外,该页面确实指出

注意

如果项目已经是最新的且没有触发任何构建,则预构建事件不会运行。

因此,如果项目中的任何文件没有更改,它可能不会运行script.pl,但对a.hb.hc.h的更改应该足以确保生成z.h。除非您没有将上游头文件添加到项目中...这可能是另一个问题。

如果是这种情况,我想到的解决方法是创建一个名为“HeaderBuild”的第二个虚拟项目,其唯一任务是包含所需的.h文件,调用script.pl并将z.h输出复制到您真正的项目头文件目录中。确保虚拟项目在真实项目之前运行,然后您就可以开始了。


是的,我可以将其添加为预构建步骤,以便脚本始终运行,即使它并不是真正必要的。 - Lone Shepherd
既然您已经在构建过程中运行了Perl脚本,那么为什么不将检查程序集成到脚本中呢?检查所有依赖头文件的修改时间是否晚于输出文件(或编译后的可执行文件),如果没有,则跳过生成“z.h”文件。这听起来比让VS为您跳跃要简单得多。 - Patrick M
没错,我可以这样做;或者无论如何都可以一直运行脚本,它是一个非常快的脚本。我会接受这个答案作为有效的解决方法。 - Lone Shepherd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接