在使用Visual Studio时,在预构建事件中自动生成C++代码

5
我想使用Visual Studio(具体来说是VS 2005)中的预构建事件来运行一个Python脚本,该脚本将自动生成一个.cpp文件。但我遇到了麻烦,编译器似乎直到在构建完成后才知道这个文件需要重新构建,这意味着我需要构建解决方案两次——一次生成这个文件,另一次编译这个文件。

不了解C++编译器的内部工作,我的天真猜测是它会在预构建事件运行之前制作需要重新编译的脏文件列表,因此错过了这个自动生成的文件,因为在预构建事件之前它并没有被修改过。

有没有办法告诉编译器如果预构建事件更改了这个文件,它需要重新编译这个文件呢?


我也遇到过这个问题,但从未能够解决它。我尝试在预构建事件中将日期设置为过去,我尝试设置其他文件的日期并删除已编译的对象文件等,但似乎没有任何作用。 - SoapBox
我所想到的是让预构建可执行文件检测到它已经更改了某些内容。请参阅我的相关问题:http://stackoverflow.com/questions/528494/use-domain-specific-language-files-inside-c-project - Benoît
实际上,我所指的可执行文件是在自定义构建规则中使用的。 - Benoît
2个回答

5

我使用msvc 6。

尝试...

Put the python script into the project
give it a custom build step that invokes python on it,
to create the cpp file.

Add the cpp file to your project and do a rebuild all.

我们使用Oracle Pro*C预处理器来完成这项任务。它运行良好。


我之前用过 VS2008 中的 T4 转换处理类似的事情,效果很不错。 - MrSlippers

2

我从未尝试过,但你可以尝试直接在预构建事件中调用编译器(cl.exe)。


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