青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

平凡的世界

神鷹忽展翅,頭頂青天飛
隨筆 - 10, 文章 - 0, 評論 - 34, 引用 - 0
數(shù)據(jù)加載中……

軟件工程配置規(guī)范(VC2005) 第二版

版本號

日期

修改者

說明

備注

0.1

2010.07.13

phoenix

   

0.2

2011.01.12

phoenix

   
         
         
         


目 錄

1. 引言... 1

1.1. 編寫目的.. 1

1.2. 參考資料.. 1

2. 目錄結(jié)構(gòu)... 1

3. 工程配置... 2

4. 屬性配置... 2

4.1. “常規(guī)”配置.. 2

4.2. “調(diào)試”配置.. 2

4.3. “C/C++”配置.. 3

4.4. “鏈接器”配置.. 3

4.5. “生成事件”配置.. 3

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

1.引言

1.1.編寫目的

當(dāng)開發(fā)人員開始進(jìn)行編碼工作以及編碼工作的過程中,都需要根據(jù)工程的需要配置各種工作路徑,如引入第三方庫、輸出生成的頭文件和庫文件等。以前部分開發(fā)人員對工程路徑的定義比較隨意,相當(dāng)一部分使用的是絕對路徑。如果只是單個開發(fā)人員完成一個單一的功能,這種做法看起來沒有什么明顯的缺點(diǎn)。但是,如果是數(shù)個開發(fā)人員來合作共同完成一個功能和結(jié)構(gòu)都很復(fù)雜的工程時,這種做法的弊端就凸顯出來。一個非常明顯的問題就是:開發(fā)人員A將他的工程交給開發(fā)人員B編譯時,如工程定義使用了絕對路徑,除非開發(fā)人員B的計(jì)算機(jī)與A的計(jì)算機(jī)具有完全相同的文件組織結(jié)構(gòu),否則一次性編譯通過是不可能。另外,當(dāng)開發(fā)人員在一長串的“Can’t find …”或者“XXX undefined”的錯誤與警告中焦頭爛額時,也許只是因?yàn)橐粋€不起眼的地方使用了絕對路徑,或者是大小寫的差異。

因此,規(guī)范開發(fā)人員的工程配置是很有必要的。通過規(guī)范的工程配置,所有開發(fā)人員之間的工程是無縫銜接的,即任何一個開發(fā)人員的工程拿到其他人的工程時,無須修改任何一個配置便可以一次性的編譯成功。這樣的規(guī)范操作無異可以大大減少團(tuán)隊(duì)成員通過代碼交流時的不必要成本。另外,規(guī)范的工程配置也便于SubVersion版本控制系統(tǒng)的引入,通過引入SubVersion版本控制系統(tǒng),可以協(xié)調(diào)整個研發(fā)團(tuán)隊(duì)的工程進(jìn)度,控制產(chǎn)品的里程碑發(fā)布。這一切,都從規(guī)范的工程配置開始。

1.2.參考資料

1. 《OpenSource SubVersion規(guī)范》

2. 《Visual Studio 2005編程指南》

2.目錄結(jié)構(gòu)

MyDevelopeFolder

├─Bin

│ ├─Debug

│ ├─Program

│ ├─Release

│ ├─UnicodeDebug

│ ├─UnicodeProgram

│ └─UnicodeRelease

├─MySDK

│ ├─Include

│ │ ├─BCG

│ │ └─Boost

│ └─Lib

│ ├─Debug

│ │ ├─BCG

│ │ └─Boost

│ ├─Program

│ │ ├─BCG

│ │ └─Boost

│ ├─Release

│ │ ├─BCG

│ │ └─Boost

│ ├─UnicodeDebug

│ │ ├─BCG

│ │ └─Boost

│ ├─UnicodeProgram

│ │ ├─BCG

│ │ └─Boost

│ └─UnicodeRelease

│ ├─BCG

│ └─Boost

├─Project

│ ├─LibMyExample

│ │ └─Document

│ └─MyExampleApp

│ └─Document

├─Solution

└─Temp

├─Compile

└─Link

1. MyDevelopeFolder是開發(fā)工程的根目錄

2. Bin目錄存放所有動態(tài)鏈接庫和可執(zhí)行程序,包括自己的產(chǎn)出和第三方庫,按編譯配置名稱包括對應(yīng)的子目錄,如Debug、Release。另外,程序運(yùn)行過程中需要外部的數(shù)據(jù)文件和啟動時需要的配置文件等等都可放于該目錄

3. MySDK存放產(chǎn)品項(xiàng)目依賴、產(chǎn)出的.h文件和.lib文件。其中Lib目錄下根據(jù)配置名稱和第三方庫名稱對lib文件進(jìn)行管理。如某項(xiàng)目使用BCG作為界面庫,則BCG的頭文件放置于“Include\BCG”下,不同版本的庫文件置于“Lib\配置名\BCG”下;項(xiàng)目輸出的lib文件直接位于“Lib\配置名”下。這樣產(chǎn)品依賴的不同開發(fā)庫所使用頭文件與庫文件和輸出的頭文件與庫文件相互之間是獨(dú)立、彼此不干涉的。

4. Project是工程目錄,用于存放代碼,按模塊名組織次級目錄。功能庫工程一般的以“Lib”開頭,以便與其它動態(tài)庫區(qū)別。每個工程模塊目錄應(yīng)包含“Document”子目錄,該目錄下按需要增加“DBM”、“DOC”、“UML”三個子目錄。“DBM”用于存放與該模塊相關(guān)的數(shù)據(jù)庫設(shè)計(jì)文檔,通常是PowerDesigner文檔;“DOC”用于存放與該模塊相關(guān)的一般性說明文檔;“UML”用于存放與該模塊相關(guān)的UML設(shè)計(jì)文檔,通常是Rational Rose文檔。

5. Solution是解決方案目錄,用于存放產(chǎn)品的完整解決方案。通常使用解決方案可以生成該產(chǎn)品的所有版本。

6. Temp是用于編譯生成的中間目錄,主要存放編譯過程中生成的各種中間文件。

3.工程配置

根據(jù)調(diào)試信息與字符集的不同,一般的工程配置有六類,如下表所示

名稱

字符集

是否包含調(diào)試信息

是否包含代碼優(yōu)化

Debug

ANSI

YES

NO

Release

ANSI

YES

YES

Program

ANSI

NO

YES

UnicodeDebug

UNICODE

YES

NO

UnicodeRelease

UNICODE

YES

YES

UnicodeProgram

UNICODE

NO

YES

4.屬性配置

4.1.“常規(guī)”配置

輸出目錄: ..\..\Temp\Link\$(ProjectName)\$(ConfigurationName)

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

4.2.“調(diào)試”配置

如果需要啟動本模塊進(jìn)行調(diào)試,則“命令”為:..\..\Bin\$(ConfigurationName)\$(TargetFileName)

4.3.“C/C++”配置

1) “附加包含目錄”:..\..\MineSDK\Include ,如有其它目錄請用“;”間隔,注意使用相對路徑,嚴(yán)禁使用絕對路徑

2) 動態(tài)庫使用導(dǎo)出宏導(dǎo)出/導(dǎo)入時,應(yīng)在“預(yù)處理器”中定義導(dǎo)出宏,不得在代碼文件中定義。導(dǎo)出宏的一般格式為“LIB_XXXXX”。

3) 一般情況下不推薦使用預(yù)編譯頭。

4.4.“鏈接器”配置

1) “輸出文件”:

a) 若為Debug版時:$(OutDir)\$(ProjectName)D.dll;

b) 若為Release版時:$(OutDir)\$(ProjectName).dll。

2) “附加庫目錄”:..\..\Bin\$(ConfigurationName);..\..\MySDK\Lib,如有其它目錄請用“;”間隔,注意使用相對路徑,嚴(yán)格禁止使用本地絕對路徑。

3) “模塊定義文件”:一般不使用模塊定義.def文件,本項(xiàng)可選擇“從默認(rèn)配置…”。

4.5.“生成事件”配置

一般需要配置的是“生成后事件”。任何一個工程模塊的生成后事件都應(yīng)包括以下內(nèi)容:

1) copy $(TargetPath) ..\..\Bin\$(ConfigurationName)

2) 若有導(dǎo)出的Lib庫文件,需要增加:copy $(TargetDir)$(TargetName).lib ..\..\MySDK\Lib

3) 若有導(dǎo)出的頭文件,需要增加: copy myhead.h ..\..\MySDK\Include

具體文件名與路徑視情況而定,但是嚴(yán)禁使用絕對路徑。

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

ConfigurationName

配置名字,通常是Debug或者Release

IntDir

編譯器使用的中間目錄,產(chǎn)出obj文件

OutDir

鏈接器使用的輸出目錄

ProjectDir

項(xiàng)目目錄

ProjectName

項(xiàng)目名字

SolutionDir

解決方案目錄

TargetDir

目標(biāo)輸出文件所在的目錄

TargetExt

目標(biāo)輸出的擴(kuò)展名

TargetFileName

目標(biāo)輸出文件名,包括擴(kuò)展名

TargetName

目標(biāo)輸出名,不包括擴(kuò)展名

TargetPath

目標(biāo)輸出文件的全路徑名

posted on 2011-04-03 18:58 西門有悔 閱讀(2203) 評論(6)  編輯 收藏 引用

評論

# re: 軟件工程配置規(guī)范(VC2005) 第二版  回復(fù)  更多評論   

希望可以放出pdf版,這樣方便使用……
2011-04-03 20:19 | 御用軟件

# re: 軟件工程配置規(guī)范(VC2005) 第二版  回復(fù)  更多評論   

個人非常討厭什么 bin,source,solution,。。。
你要么就純粹自己搞,bin、source 都可以,就別 solution、project 了,最后自己寫腳本
要么就用 solution、project,目錄就大體上按默認(rèn)的,一個project一個目錄,
既用 solution、project,又獨(dú)立搞一套目錄體系,然后修改一大堆純粹關(guān)于目錄的配置參數(shù),何必呢
2011-04-03 21:52 | 溪流

# re: 軟件工程配置規(guī)范(VC2005) 第二版  回復(fù)  更多評論   

@溪流
1.Bin里是所有生成的文件,包含了程序可以運(yùn)行的最小資源,產(chǎn)品發(fā)布人員只需要將Bin里的文件打包就可以生成安裝文件。而默認(rèn)的配置會在bin目錄里生成程序調(diào)試數(shù)據(jù)庫等一些非運(yùn)行時需要的文件。Bin是面向產(chǎn)品測試與發(fā)布人員的,開發(fā)人員只是將dll和exe輸出到bin中進(jìn)行調(diào)試。這樣使產(chǎn)品開發(fā)與產(chǎn)品測試、發(fā)布分開。
2.Project與Solution分開是因?yàn)槊總€成員都是獨(dú)立地開發(fā)一個或幾個Project的,他把Bin與SDK從SVN上checkout出來,就可以進(jìn)行自己的代碼編寫,而不必關(guān)心與其他開發(fā)人員所同時進(jìn)行的project的依賴關(guān)系。Solution里包含的是整個產(chǎn)品的所有project以及project之間的依賴關(guān)系。打開solution就可以生成一個完整的產(chǎn)品到bin里,而且bin里沒有任何多余的文件。

效果:采用了這套工程配置方法,整個團(tuán)隊(duì)代碼與工程層面的交流明顯順暢多了,再也沒有出現(xiàn)拿到別人的工程半天build不過的問題。而且開發(fā)與測試、發(fā)布之間的卸接也很順利。開發(fā)人員每天都build后commit到svn。每周一開發(fā)部產(chǎn)品管理員用solution生成一個完成的bin并整理出track后發(fā)布到Svn上,測試人員用本周一的bin進(jìn)行測試,到了Tag的時間點(diǎn)測試部產(chǎn)品管理員將bin打包成安裝程序發(fā)布到svn上并通知實(shí)施部門有更新版本。形成一個完整的流程。再用bugzilla與dotproject對產(chǎn)品的bug和人員進(jìn)行管理。

總結(jié):這套工程配置應(yīng)該算是不依賴于第三方工具,進(jìn)行基于Svn的代碼管理以及多個開發(fā)人員之間的合作開發(fā)。如果是一個人,或者project不多的時候就沒必要如此復(fù)雜。而且修改工程配置是一次的,不需要每次都修改。可以說一勞永逸。

謝謝你的評論。
2011-04-04 00:43 | 西門有悔

# re: 軟件工程配置規(guī)范(VC2005) 第二版  回復(fù)  更多評論   

1、打包人員不該偷懶,他們應(yīng)該知道完整的精確的文件清單,而不僅僅是“某個目錄下的所有文件”
2、還是沒有看出來把solution單獨(dú)藏在一個目錄的用意。
2011-04-04 11:58 | 溪流

# re: 軟件工程配置規(guī)范(VC2005) 第二版[未登錄]  回復(fù)  更多評論   

可參考 chrome 或者 svn烏龜 等開源項(xiàng)目的目錄組織,
我們都是每天自動構(gòu)建, 自動生成安裝包等
2011-04-06 08:56 | chentan

# re: 軟件工程配置規(guī)范(VC2005) 第二版  回復(fù)  更多評論   

@溪流
打包人員不該偷懶,他們應(yīng)該知道完整的精確的文件清單,而不僅僅是“某個目錄下的所有文件”

他們通常不知道 你也很難讓他們知道
2011-04-07 12:44 | houwukong

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品高潮呻吟久久av黑人| 香蕉久久夜色精品| 欧美va亚洲va日韩∨a综合色| 在线精品国精品国产尤物884a| 久久综合九色综合欧美狠狠| 久久色在线播放| 日韩一区二区精品| 国产精品99久久久久久久久久久久| 国产精品乱码一区二区三区| 久久久久高清| 另类亚洲自拍| 欧美一级淫片播放口| 有坂深雪在线一区| 亚洲国内欧美| 欧美三级在线播放| 久久精品国产亚洲一区二区三区| 麻豆成人小视频| 亚洲一区二区三| 久久综合一区| 亚洲精品永久免费精品| 亚洲一区二区三区在线播放| 狠狠做深爱婷婷久久综合一区| 亚洲国产日韩精品| 国产精品尤物| 亚洲精品久久| 黑人巨大精品欧美黑白配亚洲| 亚洲另类自拍| 精品不卡一区| 亚洲一区二区三区欧美| 亚洲第一区中文99精品| 亚洲新中文字幕| 亚洲黄色影院| 欧美在线观看日本一区| 亚洲系列中文字幕| 美女网站久久| 久久久久国色av免费看影院 | 亚洲国产日韩欧美在线动漫| 国产精品久久久久999| 亚洲成色999久久网站| 国产亚洲欧美一区在线观看| 亚洲伦理网站| 亚洲日本中文| 久久天天躁狠狠躁夜夜av| 久久www成人_看片免费不卡| 欧美午夜片在线观看| 亚洲第一福利视频| 亚洲电影免费| 久久偷看各类wc女厕嘘嘘偷窃| 先锋影院在线亚洲| 欧美系列亚洲系列| 亚洲精品久久久一区二区三区| 伊人久久大香线蕉综合热线| 欧美在线观看视频| 久久国产日韩| 国产亚洲精品一区二555| 亚洲无线观看| 午夜欧美大片免费观看| 欧美日韩午夜视频在线观看| 91久久久久久| 99国产麻豆精品| 欧美日韩高清免费| 亚洲九九精品| 亚洲天堂av综合网| 欧美午夜视频在线观看| 一本大道久久a久久精二百| 一区二区三区蜜桃网| 欧美精品自拍偷拍动漫精品| 亚洲欧洲在线免费| 一区二区三区免费网站| 欧美性大战久久久久| 一区二区高清视频| 亚洲在线观看免费| 国产日韩欧美综合一区| 欧美在线视频导航| 欧美成人午夜| 一区二区三区欧美视频| 欧美午夜视频在线观看| 香蕉久久一区二区不卡无毒影院 | 亚洲欧美中日韩| 国外成人免费视频| 在线不卡亚洲| 日韩视频免费| 欧美一区二区视频观看视频| 欧美亚洲综合在线| 欧美成人午夜激情| 一区二区成人精品| 久久综合伊人77777蜜臀| 欧美日韩国产精品专区| 国产一区二区看久久| 亚洲精品免费在线播放| 欧美在线看片a免费观看| 91久久综合| 久久九九精品| 韩国av一区二区| 亚洲欧美日韩一区二区三区在线| 欧美大成色www永久网站婷| 亚洲激情专区| 农村妇女精品| 亚洲第一福利社区| 久久人人爽人人爽| 亚洲一区二区视频| 国产精品免费一区二区三区在线观看 | 91久久国产精品91久久性色| 午夜精品久久久| 亚洲视频在线看| 国产精品www色诱视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 男同欧美伦乱| 欧美成黄导航| 亚洲视频999| 亚洲欧美一区二区激情| 国产嫩草一区二区三区在线观看| 亚洲小说春色综合另类电影| 亚洲精品社区| 亚洲国产免费看| 欧美成人久久| 久久精品女人| 欧美xart系列高清| 亚洲无限av看| 久久久亚洲高清| 亚洲午夜激情网页| 欧美诱惑福利视频| 一本久久a久久免费精品不卡| 这里只有精品在线播放| 一区二区在线看| 日韩香蕉视频| 亚洲国产一区在线| 亚洲视频一区在线| 亚洲精品影视| 可以免费看不卡的av网站| 99成人在线| 巨乳诱惑日韩免费av| 欧美一级夜夜爽| 欧美日韩一区二区三区| 欧美激情一区二区三区在线视频| 国产精品www.| 一区二区三区视频在线| 亚洲三级免费| 欧美成人黄色小视频| 美女露胸一区二区三区| 国产精品天天摸av网| 日韩一区二区精品视频| 精久久久久久| 久久影视精品| 久久字幕精品一区| 黑人极品videos精品欧美裸| 欧美在线视频一区二区| 狂野欧美一区| 亚洲国产成人精品久久| 毛片一区二区三区| 亚洲高清不卡一区| 正在播放欧美视频| 国产精品久久久久久久久久直播| 亚洲深夜福利在线| 久久精彩视频| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲欧洲日韩综合二区| 亚洲国产精品久久久久| 欧美伦理91i| 亚洲欧美视频| 欧美gay视频| 亚洲字幕在线观看| 精品动漫一区| 国产精品va| 另类天堂av| 久久www成人_看片免费不卡| 欧美激情小视频| 久久精品国产第一区二区三区最新章节 | 久久天天躁狠狠躁夜夜爽蜜月| 亚洲国产小视频在线观看| 久久国产视频网站| 亚洲图片欧洲图片av| 狠狠色丁香婷综合久久| 国产精品国码视频| 欧美极品色图| 老司机aⅴ在线精品导航| 亚洲欧美综合一区| 99国产精品国产精品久久| 欧美大片18| 欧美激情亚洲视频| 免费观看不卡av| 久久久精品动漫| 久久琪琪电影院| 久久精品一区二区三区不卡牛牛| 亚洲午夜精品福利| 亚洲黄色影片| 亚洲视频一区二区免费在线观看| 亚洲黄一区二区三区| 最新日韩欧美| 亚洲精品一区在线观看| 一区二区三区精品国产| 亚洲欧美日韩国产成人精品影院| 亚洲一区综合| 久久精品中文字幕一区| 久久久水蜜桃av免费网站| 亚洲电影欧美电影有声小说| 亚洲欧洲一级| 欧美有码在线观看视频| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美区在线观看|