天天看點

關于VC2005工程配置的說明

1.     目的

1.         規範公司的工程配置

2.         有利于代碼産品的組織、合并

3.         有利于程式員之間的交流

2.     參與者

        所有的代碼開發人員

3.     編譯版本

       一般情況下VC2005配置管理器隻需要配置debug與release兩個版本,解決方案配置名分别對應“Debug”與“Release”。若開發人員需要定制不同的debug或release版本時,不應在“工程-屬性-配置屬性-C/C++-預處理器-預處理器定義”中進行定義,而應在代碼中通過#define進行定義,這樣該工程被任意引用時都無須級聯定義預處理器。隻有在需要進行Dll導出時才在此處進行預處理器定義。系統預設的預處理器通常也不要出現,而使用“從父級或項目預設設定繼承”。

4.     目錄結構

本地工程的目錄結構如下圖所示:( 遵循這樣的目錄結構,工程越大會越輕松)

MyWork

├─Bin

│  ├─Debug

│  └─Release

├─Build

│  ├─Debug

│  │  ├─Project_1

│  │  └─Project_2

│  └─Release

│      ├─Project_1

│      └─Project_2

├─Include

├─Project

│  ├─Project_1

│  └─Project_2

│      └─Doc

└─Solution

Bin:按編譯版本分類存放編譯成功後的DLL子產品、可執行程式或其它内容。通常除非是作業系統的元件,否則Bin中的子產品或程式不依賴于該檔案夾之外的任何檔案;每一個編譯版本的子產品或程式都可以獨立運作。( 程式打包的主要目錄)

若目标子產品或工程确需要其它元件,則應使用“工程-屬性-配置屬性-生成事件”對應的事件功能來輸出特定的檔案,該檔案通常位于該工程代碼目錄下。例如,子產品需要一個“DBService.udl”檔案作為資料庫連接配接檔案,則應在“工程-屬性-配置屬性-生成事件-預生成事件-指令”裡使用“ copy DBService.udl ..\..\Bin\$(CofigurationName)\DBService.udl”指令來輸出該檔案。

Build:按編譯版本與工程名分類存放編譯過程的中間檔案( 存放臨時檔案,可以随時删除,節省空間)

Include:工程的公共頭檔案目錄,所有工程輸出或包含的頭檔案均位于此目錄下。若工程依賴的頭檔案較多,如boost庫,可以另外存放,通過VC2005的環境配置來包含。若工程輸出的頭檔案較多,可以自行在Include中定義二級或三級子目錄, 此種情況下工程的開發人員最好提供一個位于Include目錄下的“Include_XXX.h”檔案,這樣使用者隻需包含此檔案便可把Include中相關子目錄中的檔案一同包含進來(這是個好方法)。

Project:工程的代碼目錄。此目錄下按子產品名字存放工程的代碼。需要指出的是,每個子產品代碼子目錄下應視需要包含一個“doc”二級子目錄,該目錄中主要存放與該子產品(僅與該子產品)相關的所有設計文檔,如UML文檔、資料庫設計文檔、腳本檔案、Word文檔等,doc二級子目錄一般按“主題”組織,比如撰寫文檔過程中繪制的Visio圖表等,一并也應放入,可以起到一個備份作用。通常svn代碼管理隻管理Project目錄。( 代碼目錄,重要,svn備份)

Solution:存放解決方案。通常每個開發人員會承擔一個軟體産品不止一個子產品的開發,開發人員可根據需要将Project目錄中的工程進行組合,作為不同主題的解決方案。要注意每個解決方案都會生成一個相對比較大的.ncb檔案,該檔案是VC2005開發環境的Intellisense(智能感覺)生成的檔案,需定理清理。(可以建立不同的解決方案,添加工程,友善開發調試)

5.     配置用例

工程配置屬性中,應該盡量使用相對路徑,因為我們無法保證每個開發人員都将工程資料存放在個人計算機相同的位置。可以靈活地使用VC2005的“宏”。

下面給出一個工程配置的例子,供大家參考

工程-屬性

配置屬性 - 正常:

輸出目錄:..\..\Bin\$(ConfigurationName)

中間目錄:..\..\Build\$(ConfigurationName)\$(ProjectName)

C/C++ - 正常:

附加包含目錄:..\..\Include

警告等級:4級

将警告視為錯誤:是  (注: 通常初次着手編寫代碼時應将這兩項置為最嚴格的等級,這樣可以限制我們寫出标準、合格的代碼來,我認為“0 errers 0 warnings”是一個目标)

C/C++ - 預處理器:

預處理器定義:LIB_MY_DLL ( 可以載入動态庫的不同版本,重要,靈活)

連結器 - 正常:

輸出檔案:$(OutDir)\$(ProjectName)_D.dll (debug時)

$(OutDir)\$(ProjectName).dll     (release時)

附加庫目錄:$(OutDir)

生成事件 - 生成後事件:

指令行: copy my_head.h ..\..\Include\my_head.h

說明:正在輸出頭檔案my_head.h到公共Include目錄…

6.附錄:VC2005中可以使用的宏



關于VC2005工程配置的說明

7.     附件

示例工程(For Visual Studio 2005 SP1)

繼續閱讀