2011-04-19 28 views
0

有大MSVC C++的解決方案。由數十個項目組成。
如何我可以生成的.h的名單,這打破了以下一致性規則一個.cpp文件:
- 文件(的.cpp,.h)中存在,但在任何項目
不registsred - 文件(的.cpp, .h)中包含但不記錄在項目
- 項目登記的源文件,是不是在項目目錄產生源列表中任何項目文件未註冊

解決方案的目錄是simple.It在溶液中的基礎目錄目錄的一個級別的設置,如果有幫助,每個目錄都是一個項目。

是否使用的是VS的版本

回答

1

你要做的唯一的解決辦法是,以通過所有項目目錄走路和閱讀所有的.vcproj文件(XML文件一樣)來編寫一個腳本。

如果您使用Python,我建議您使用xml.dom和xml.dom.minidom模塊來讀取.vcproj文件和os.walk函數來遍歷項目目錄。你

的.vcproj文件protoype必要的數據是:

<?xml version="1.0" encoding="Windows-1252"?> 
<VisualStudioProject Name=......> 
    <Files> 
    <Filter Filter="cpp;c;cc;cxx;........> 
     <File RelativePath="YOUR.cpp file here"/> 
     ... 
    </Filter> 
    <Filter Filter="h;hpp;hxx;........> 
     <File RelativePath="YOUR.h file here"/> 
     ... 
    </Filter> 
    </Files> 
</VisualStudioProject> 
1

不確定你的意思是「在任何項目中註冊」,但是這裏有一個出發點: 你可以通過從根目錄執行(遞歸)目錄列表來獲得所有.h和.cpp文件的列表。由於該解決方案和項目文件都只是.xml文件(在VS的後續版本至少),你可以使用正則表達式退出時,所有被引用的.h和.cpp文件,然後交叉引用你有做目錄列表與你可以從項目文件中解析出來的列表。在你的情況下,你的簡單的目錄結構使搜索更簡單一些。

如果你的第二點意味着「被其他源代碼或頭文件包含」,那麼我猜你必須讀取所有的.h和.cpp文件並搜索#include語句,但這會使程序更復雜一些。