00. 目錄
01. 概述
02. 解決方案相關檔案
03. 工程相關檔案
04. 頭檔案和源檔案
05. 資源檔案
06. 預編譯頭檔案
07. 編譯目标和中間檔案
08. 附錄
用應用程式向導生成架構程式後,我們可以在之前設定的location下看到以解決方案名命名的檔案夾,此檔案夾中包含了幾個檔案和一個以工程名命名的子檔案夾,這個子檔案夾中又包含了若幹個檔案和一個res檔案夾,建立工程時的選項不同,工程檔案夾下的檔案可能也會有所不同。
如果已經以debug方式編譯連結過程式,則會在解決方案檔案夾下和工程子檔案夾下各有一個名為“debug”的檔案夾,而如果是release方式編譯則會有名為“release”的檔案夾。這兩種編譯方式将産生兩種不同版本的可執行程式:debug版本和release版本。debug版本的可執行檔案中包含了用于調試的資訊和代碼,而release版本則沒有調試資訊,不能進行調試,但可執行檔案比較小。
解決方案相關檔案包括解決方案檔案夾下的.sdf檔案、.sln檔案、.suo檔案和ipch檔案夾。
.sdf檔案和ipch目錄一般占用空間比較大,幾十兆甚至上百兆,與智能提示、錯誤提示、代碼恢複和團隊本地倉庫等相關。如果你覺得不需要則可以設定不生成它們,方法是點選菜單欄tools->options,彈出options對話框,選擇左側面闆中text editor->c/c+±>advanced,右側清單中第一項disable database由false改為true就可以了,最後關閉vs再删除.sdf檔案和ipch目錄以後就不會再産生了。但關閉此選項以後也會有很多不便,例如寫程式時的智能提示沒有了。
.sln檔案和.suo檔案為mfc自動生成的解決方案檔案,它包含目前解決方案中的工程資訊,存儲解決方案的設定。
工程相關檔案包括工程檔案夾下的.vcxproj檔案和.vcxproj.filters檔案。
.vcxproj檔案是mfc生成的工程檔案,它包含目前工程的設定和工程所包含的檔案等資訊。.vcxproj.filters檔案存放工程的虛拟目錄資訊,也就是在解決方案浏覽器中的目錄結構資訊。
應用程式向導會根據應用程式的類型(單文檔、多文檔或基于對話框的程式)自動生成一些頭檔案和源檔案,這些檔案是工程的主體部分,用于實作主架構、文檔、視圖等。下面分别簡單介紹下各個檔案:
test.h:應用程式的主頭檔案。主要包含由cwinappex類派生的ctestapp類的聲明,以及ctestapp類的全局對象theapp的聲明。 test.cpp:應用程式的主源檔案。主要包含ctestapp類的實作,ctestapp類的全局對象theapp的定義等。 mainfrm.h和mainfrm.cpp:通過這兩個檔案從cframewndex類派生出cmainframe類,用于建立主架構、菜單欄、工具欄和狀态欄等。 testdoc.h和testdoc.cpp:這兩個檔案從cdocument類派生出文檔類ctestdoc,包含一些用來初始化文檔、串行化(儲存和裝入)文檔和調試的成員函數。 testview.h和testview.cpp:它們從cview類派生出名為ctestview的視圖類,用來顯示和列印文檔資料,包含了一些繪圖和用于調試的成員函數。 classview.h和classview.cpp:由cdockablepane類派生出cclassview類,用于實作應用程式界面左側面闆上的class view。 fileview.h和fileview.cpp:由cdockablepane類派生出cfileview類,用于實作應用程式界面左側面闆上的file view。 outputwnd.h和outputwnd.cpp:由cdockablepane類派生出coutputwnd類,用于實作應用程式界面下側面闆output。 propertieswnd.h和propertieswnd.cpp:由cdockablepane類派生出cpropertieswnd類,用于實作應用程式界面右側面闆properties。 viewtree.h和viewtree.cpp:由ctreectrl類派生出cviewtree類,用于實作出現在classview和fileview等中的樹視圖
一般我們使用mfc生成視窗程式都會有對話框、圖示、菜單等資源,應用程式向導會生成資源相關檔案:res目錄、test.rc檔案和resource.h檔案。
res目錄:工程檔案夾下的res目錄中含有應用程式預設圖示、工具欄使用圖示等圖示檔案。
test.rc:包含預設菜單定義、字元串表和加速鍵表,指定了預設的about對話框和應用程式預設圖示檔案等。
resource.h:含有各種資源的id定義。
mfc程式的檔案都要包含afxwin.h等檔案,如果每次都編譯一次則會大大減慢編譯速度。是以把常用的mfc頭檔案都放到了stdafx.h檔案中,然後由stdafx.cpp包含stdafx.h檔案,編譯器對stdafx.cpp隻編譯一次,并生成編譯之後的預編譯頭test.pch,大大提高了編譯效率。
如果是debug方式編譯,則會在解決方案檔案夾和工程檔案夾下都生成debug子檔案夾,而如果是release方式編譯則生成release子檔案夾。
工程檔案夾下的debug或release子檔案夾中包含了編譯連結時産生的中間檔案,解決方案檔案夾下的debug或release子檔案夾中主要包含有應用程式的可執行檔案。