2011-09-13 51 views
1

我正在處理一個非常古老的大型VC6 ++項目,這一切都搞砸了。在任何地方都有未使用的文件和文件夾,文件夾的副本,只是在當前狀態下手動清理它們而已。清理一個VC++ 6項目

它會最終完成,但有沒有簡單的方法來檢查乾淨的編譯時使用什麼文件和文件夾?

項目設置並不能幫助我,因爲它只是使用文件夾和其他包含目錄的副本。

有什麼建議嗎?

+0

在linux下,我只是建立一些東西,並檢查最後訪問的文件的時間戳,不知道Windows是否有類似的東西。 – PlasmaHH

+0

Visual C++ 6? (/我檢查當前日期)...在2011年... ...對於您的問題,請刪除除DSW和DSP文件以外的所有內容,然後嘗試編譯。對於每個錯誤,請將編譯器所需的ONE文件放回原處,然後重試。最後,你將只有該項目所需的東西... – paercebal

+0

這個問題是非常類似於http:// stackoverflow。com/questions/1301850/tools-to-find-included-headers-which-are-unused – dip

回答

1

VC6會產生一個makefile你:

你可以使用生成的生成文件(和關聯的.dep文件)作爲起點並將其編輯到構建中使用的文件列表。

除了構建日誌中可能顯示的.c/.lib文件之外,您還可以看到項目所依賴的頭文件。有一點要記住,你可能也想確保你跟蹤.dsw.dsp工作區和項目文件。

如果你有點冒險,你可以說服makefile實際上將源文件複製到其他位置,並使用適當的覆蓋特定的宏和/或依賴關係。但是這可能比一次性努力的價值更麻煩。

最後,有一個商業產品,CopyWiz by Kinook Software,似乎有可能做你想要的功能(並且它支持VC++ 6)。注意:我不確定它是否會按照您的要求做,但可能值得一看。

+0

我寫了一個解析makefile的小工具,它是一個非常棒的解決方案。非常感謝你! – John

2

那麼,如果你想解析編譯器輸出,你可以得到哪些文件實際使用。我也發現this谷歌搜索時,你可能想嘗試(我沒有嘗試過自己)。我的方式是清理構建,列出所有源文件,構建,併爲每個來源找到其相應的.obj。沒有使用.obj的人沒有使用。請注意,這僅適用於源文件,未使用的頭文件不會被檢測到。

+1

檢查obj文件似乎是一個好主意。但是檢查文件的最後訪問日期呢?我想到了這一點,它應該顯示哪些頭文件也被使用。哼。我可能會錯過一些東西。 – John

+0

從obj文件方法開始。它非常簡單快捷,它可以擺脫很多廢棄物。 – Dennis

0

是的。從SysInternals運行進程監視器。它可以捕獲所有文件系統事件並根據路徑和其他因素對其進行過濾。

因此,將過濾器設置爲源樹的根目錄,只有成功讀取文件(VC會在很多地方查找標頭)並構建項目。您可能仍會看到數千個事件。因此,將它們保存到文件,排序路徑,並刪除重複的路徑(頭特別是將有許多重複的條目)