2010-11-04 107 views
0

我有一個自定義分析器,它可以生成C++文件並將它們添加到項目中。我想要做的是在構建我的項目之前調用這個解析器,並在同一個構建中編譯新生成的文件。我使用VS2010。我試圖調用PreBuild中的解析器,生成的文件已正確添加到項目中(我可以在IDE中看到它們),但它們未被編譯。就像項目不知道它裏面有新文件一樣。預編譯時自動生成的C++文件未包含在編譯中

回答

1

如果在PreBuild階段添加到項目中的文件實際上包含在編譯中,我不確定但不完全知道。我相信包含的文件是在PreBuild階段運行之前計算的。

解決此問題的一種方法是將空文件添加到項目中並將其包含在編譯中。讓你的prebuild階段覆蓋這個文件,後期階段重新初始化它爲空。這應該解決這個問題。

+0

你有一個點。在Prebuild步驟中,似乎不可能在編譯中包含該文件。 – user497267 2010-11-11 15:51:54

0

如果生成的文件被命名爲.cpp,它們應該被編譯。否則,您可能需要指定它們應該以某種方式編譯爲C++文件。

如果您生成的文件是從您編輯的其他文件創建的,則可以在生成器的「輸入」文件中設置自定義編譯步驟。這有助於重建文件。

0

自動生成的文件不會自動添加到項目中,因此不會被編譯。你可以在IDE中看到它們,因爲它們與你的項目文件在同一個文件夾中。

用新的自動生成的內容覆蓋現有項目文件的唯一障礙是,如果使用源代碼管理系統,那些文件將是隻讀的。在自動生成階段覆蓋它們可能會擾亂你的源代碼控制過程。

你可以試試這個:

MyProject/ 
    MyWrapperFile.cpp <-- official project file 

MyWrapperFile.cpp內容

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