预编译中自动生成的C ++文件未包含在编译中

时间:2010-11-04 15:12:25

标签: c++ visual-studio visual-studio-2010

我有一个自定义解析器,可以生成C ++文件并将它们添加到项目中。我想要做的是在构建项目之前调用此解析器并在同一构建中编译新生成的文件。我用的是VS2010。我试图在PreBuild中调用解析器,生成的文件在项目中正确添加(我可以在IDE中看到它们),但它们没有编译。就像项目不知道它中有新文件一样。

3 个答案:

答案 0 :(得分:2)

我不确定,但不完全清楚,如果在PreBuild阶段添加到项目中的文件实际包含在编译中。我相信包含的文件是在PreBuild阶段运行之前计算的。

解决这个问题的一种方法是在项目中添加一个空文件并将其包含在编译中。让您的预建阶段覆盖此文件,并将postbuild阶段重新初始化为空。这应该解决这个问题。

答案 1 :(得分:0)

如果生成的文件名为.cpp,则应编译它们。否则,您可能需要指定它们应该以某种方式编译为c ++文件。

如果生成的文件是从您编辑的其他文件创建的,则可以在生成器的“输入”文件上设置自定义编译步骤。这有助于重建文件。

答案 2 :(得分:0)

自动生成的文件不会自动添加到项目中,因此不会进行编译。您可以在IDE中看到它们,因为它们与项目文件位于相同的文件夹中。

使用新的自动生成内容覆盖现有项目文件的唯一障碍是,如果使用源控制系统,那些文件将是只读的。在自动生成阶段覆盖它们可能会扰乱源控制过程。

你可以试试这个:

MyProject/
    MyWrapperFile.cpp <-- official project file

MyWrapperFile.cpp内容

#include "stdafx.h"
#include "_AutoGenFile1.cpp"
#include "_AutoGenFile2.cpp"
// etc.