C++跨平台開發技術指南

C++跨平台開發技術指南

《C++跨平台開發技術指南》詳細介紹c++語言的跨平台技術,包含的主要內容有:Netscape在向數百萬Win.dows、.MacOS和Linux用戶發布瀏覽器時採用的策略和過程;如何使用基於標誌的API,包括POSIX和ST。;如何避免隱晦的移植性陷阱,相關的如浮點數、char類型、數據序列化,以及c++的類型;如何建立一個有效的跨平台bug報告和跟蹤系統等。《C++跨平台開發技術指南》內容詳實,實例豐富。適合軟體開發技術人員參考。

基本信息

基本信息

作者:(美國)Syd Logan 譯者:徐旭銘
出版社:機械工業出版社
頁碼:318 頁
出版日期:2009年
ISBN:9787111250821
裝幀:平裝
開本:16
叢書名:C++設計新思維
市場價:¥49.00

作者簡介

Syd Logan是一位工作生活在南加州的軟體工程師,擁有聖地亞哥州立大學的計算機科學學士和碩士學位。Syd曾是Netscape Clierlt Prodlct Developmerm(CPD)團隊的一員,在Netscape 6和7的開發過程中,他同時擔任了開發和管理的職務。之後,SYC留在AOL並作為AOL Instarlt Messerlger團隊的一員實現了VolP和點對點視頻的特性。Syd的其他著作還包括《Developirlg Imagirlg Applications witthXIELib》和《Gtk+Programming in C》 (PrerIticeHall 1997和2001)。他的研究興趣包括機器學習、作業系統設計、算法,以及任何與C、C++和LJNIX有關的事物。

編輯推薦

《C++跨平台開發技術指南》是開發可移植C/C++應用程式的權威讀物,它指導編寫的代碼可以無縫地運行在Windows、Macirltostl和Linux平台上而不需要犧牲任何功能、易用性或是產品的品質。
Mozilla和Netscape的資深工程師Syd Logan系統地講解了所有和軟體移植性有關的技術和管理上的挑戰。包括編碼、測試以及部署上的設計和考量。基於他豐富的跨平台開發經驗,Logarl完整地討論了從原生API的使用到最新的可移植GUI開發策略等一系列問題。他還展示了如何避免傳統跨平台開發方法裡存在的問題,以及如何達到特性的對等性。
《C++跨平台開發技術指南》對正在構建新的跨平台軟體,移植現有的c/c++軟體,或是考慮將來為軟體添加跨平台支持的每一位軟體從業人員和技術經理來說,都是必不可少的資源。
本書詳細介紹跨平台套用的構建方法,包括真實的場景和大量實用的代碼示例。以及一個完整的基於Mozilla xUL的跨平台GUI工具包,你可以在網站上下載到所有的源碼,並從中獲益。
Netscape在向數百萬Windows、Mac OS和Linux用戶發布瀏覽器時採用的策略和過程。
在所有平台上提供一致的功能和接口。
理解流行的平台GUl API之間關鍵的相似與不同,它們包括Win32/.NET、Cocoa和Gtk+。
決定使用原生IDE的時機,以及如何限制它們對移植性的影響。
使用基於標誌的API,包括POSI×和STL等。避免隱晦的移植性陷阱,相關的如浮點數、char類型、數據序列化,以及C++的類型等。
利用平台抽象庫,如Netscape Portable Runtime(NSPR)等。
建立一個有效的跨平台bug報告和跟蹤系統。為多個平台創建build並在跨平台構建失敗時檢測到它們。理解本地運行環境以及它們對安裝程式的影響。使用wxWidgets從一個代碼庫里來創建多平台的GUI應用程式。
完整地測試應用程式的可移植性。
通過Trixul理解跨平台GUl工具包的設計。

目錄

“C++設計新思維”叢書前言
譯者序

前言
引言
第1章 策略與管理
條款1:把所有的平台都放在同樣重要的位置
條款2:使用公共的代碼
工廠模式在不同平台上的實現
類的實現
平台相關的。ProcessesImpl類
創建實例層次。一
用CVS或SVN組織項目
編譯代碼和Makefile
條款3:要求開發人員用不同的編譯器編譯代碼
條款4:要求開發人員在不同的平台上編譯代碼
條款5:測試所有的平台
條款6:關注編譯警告
GN2J標誌
微軟VisualC++
第2章 Build系統和Toolchain
條款7:使用最適合平台的編譯器
條款8:儘量使用本地IDE
條款9:在Windows上安裝和
使用Cygwin
條款10:使用跨平台的Make系統
Make
在Windows上編譯Makefile和源碼autoconf)/automake
Tmake
在MacOSx上安裝Imake
在Windows上安裝Imake
一個例子:使用Imake
Imakefile檔案
完整編譯的一個多檔案程式
在sitedef里重寫默認值
去除代碼里的#ifdefs
Imake中用到的檔案
編譯含有子目錄的項目
Debug的編譯
第3章 軟體配置管理
條款11:使用跨平台的bug報告和
跟蹤系統
可訪問性
跟蹤平台相關bug的能力
BUgzilla
條款12:設定Tinderbox
條款13:用CVS或SLbversion來管理原始碼
設定和使用CVS
條款14:使用patch
一個例子
patch選項
應對reject
patch和跨平台開發
第4章 安裝與部署
條款15:為本地安裝程式提供支持
XPInstall
平台安裝
第5章 作業系統接口和庫
條款16:使用標準API(如POSIX)
POSIX
支持POSIx、SVID、xPG和BSD
在GCC里使用標準支持
微軟RuntimeLiNary對POSIX的支持
在Windows上使用GCC
決定支持哪個標準
條款17:考慮使用NSPR這樣的平台
抽象庫
為什麼要開發NSPR
NSPR基礎
執行緒
NSPR的其他功能
第6章 其他可移植性主題
條款18:慎用浮點數
不要把浮點值序列化為二進制
判斷相等
條款19:顯式地註明char類型的符號
條款20:避免序列化二進制數據
條款2l:避免類型長度和組織帶來的
問題
整型的長度
NSPR里的類型
長度和效率
整型轉換
struct的對齊和順序
第7章 用戶界面
條款22:從Model里把用戶界面分離出來
用Model/View把用戶界面和程式邏輯分開
用Publish/subscribe在View和Model之間通訊
小結
條款23:開發一個跨平台用戶界面的策略
影響跨平台GUI開發移植性的問題
選擇Gu的策略
第8章 WXWidgets
WXwidgets概述
許可協定
安裝WXWidgets
一個簡單的例子:HellowxW:idgets
創建應用程式的用戶界面
編譯wxWidgets應用程式
控制項與事件
容器widget
對話框
複合式widget
國際化和本地化
第9章 用c++開發跨平台GuI工具包
什麼是xuL
DHTML
htmi
腳本語言
文檔對象模型
樣式系統
XUL
視窗和對話框
box元素
工具條
選單
控制項
其他widget
用xUL編程
用JavaScript為UI添加邏輯
用XPCOM和XPConnect接口化JavaSci亂
和C/C++
Frixul
Trixul支持的widget
Trixul的基本操作
widget
類的實現
創建widget,實現的對象
widget工廠
應用程式主循環
Trixul創建用戶界面的步驟
文檔、元素和DOM
創建widget
布局
滾動視窗和布局
和JavaScript集成
和C++組件集成
……

序言

作為Firefox、Mozilla和Netscape瀏覽器解析和渲染超文本標記語言/可擴展標記語言/層疊樣式表(HTML/:XML/CSS)的引擎,Gecko是全世界使用最廣泛的渲染引擎之一。
而我身為Netscape的工程師以及後來MozillaGecko團隊的開發經理,有幸從一開始就參與了Gecko引擎的開發。
Gecko誕生時的願望是要創建一個跨平台的、小巧快速的、先進的可嵌入Web瀏覽引擎,而這一點正是我們在“瀏覽器大戰”中爭奪優勢的砝碼。當時笨拙的Netscape4.x引擎顯然已經無法再完全支持CSS2、CSS3和:XMI。Web標準了。所以有人提出只使用原有的引擎的一部分庫來重新開發。在Gecko項目的早期,我們曾經討論過要採用擁有跨平台能力的Java而不是c++。但最後還是覺得只有c++以及它特有的開發過程、工具和設計技術,才能產生最好的解決方案。《C++跨平台開發技術指南》將會把這些過程、工具和設計技術作為最佳實踐來逐一描述。
在進入.Netscape工作之前,我曾為很多公司開發過跨平台軟體。然而,MoziUa項目把這些經歷提升到了一個完全不同的高度。我們使用和開發了一系列軟體架構、工具和過程來實現大範圍內的跨平台開發工作。
我的第一個任務是把Gecko從微軟Windows系統上移植到Motif/Xlib上去。寫過跨平台軟體的人都知道,剛開始的移植工作是最有挑戰性的。你會在那時發現軟體的移植性到底如何。即使Gecko從設計的時候就是以可移植為目標,然而平台和編譯器之間的細微差異還是搞得我們很頭疼。這就是為什麼需要有一個像Mozilla‘Tinderbox那樣的工具來驗證check.in代碼的可移植性,並且還需要一個軟體開發過程來要求工程師在向代碼倉庫提交新的原始碼之前至少在兩個平台上驗證過。
Gecko引擎開發的動機之一,是要在它上面重現NetscapeCommunicator的用戶界面體驗。這就要求有一個跨平台的用戶界面方案,因為NetscapeCommunicator就是在多個平台上提供了圖形用戶界面的環境。所以我就有了這樣一個機會來設計一個用戶界面策略以解決這個棘手的跨平台問題。我撰寫了一份文檔,解釋了如何在Gecko渲染引擎里把描述用戶界面元素的X~VII。元描述(XML,metadescription)與作為控制項和事件邏輯的JavaScript相混合,以達到跨平台用戶界面的目的。這份文檔後來成為了XUL(XMLUserInterfaceL.anguage)的原型。再後來,Firefox的開發人員用xuL和Gecko引擎開發出了小巧快速、廣受歡迎的跨平台Web瀏覽器。第9章描述了如何在xUL上創建你自己的跨平台用戶界面。
作為W3CSVG(ScalableVectorGraphics)最早的成員之一,我對Gecko能不斷地進化和解決跨平台問題感到非常興奮。最近添加的對SVG的原生支持則又是Gecko可移植性的一大勝利。
SydL.xogan在這裡要展示的信息是無數工程師對於那些和創建跨平台軟體產品相關的特殊問題的真知灼見。雖然它是以c++為藍本,不過很多技術都是可以為其他非c++軟體項目所借鑑。我希望你能從中發現有用的工具、技術或是過程,從而避免跨平台開發中的陷阱,讓你的項目取得巨大成功。

相關詞條

熱門詞條

聯絡我們