Xcode開發(fā)環(huán)境 理解 Xcode 工程
Xcode是一個強大的專業(yè)開發(fā)工具,可以簡單快速、而且以您熟悉的方式執(zhí)行絕大多數(shù)常見的軟件開發(fā)任務。相對于創(chuàng)建單一類型的應用程序所需要的能力而言,Xcode要強大得多,它的設計目的是使您可以創(chuàng)建任何想像得到的軟件產(chǎn)品類型,從Cocoa及Carbon應用程序,到內(nèi)核擴展及Spotlight導入器等各種開發(fā)任務,Xcode都能完成。
Xcode獨具特色的用戶界面可以幫助您以各種不同的方式來漫游工程中的代碼,并且使您可以訪問工具箱下面的大量功能,包括GCC,javac,jikes,和GDB,這些功能都是制作軟件產(chǎn)品需要的。它是一個由專業(yè)人員設計的、又由專業(yè)人員使用的工具。
由于能力出眾,Xcode已經(jīng)被Mac開發(fā)者社區(qū)廣為采納。而且隨著蘋果電腦向基于Intel的Macintosh遷移,轉(zhuǎn)向Xcode變得比以往的任何時候更加重要。這是因為使用Xcode可以創(chuàng)建通用的二進制代碼,這里所說的通用二進制代碼是一種可以把PowerPC和Intel架構下的本地代碼同時放到一個程序包的執(zhí)行文件格式。事實上,對于還沒有采用Xcode的開發(fā)人員,轉(zhuǎn)向Xcode是將應用程序連編為通用二進制代碼的第一個必要的步驟。
無論您是已經(jīng)有一定Xcode經(jīng)驗的開發(fā)者,還是剛剛開始遷移的新用戶,都需要對Xcode的用戶界面及如何用Xcode組織軟件工程有一些理解,這樣才能真正高效地使用這個工具。這種理解可以大大加深您對隱藏在Xcode背后的哲學的認識,并幫助您更好地使用Xcode。
Xcode 工程定義的信息
在Xcode中的所有活動,從文件的創(chuàng)建和編輯,到應用程序的連編和調(diào)試,都是圍繞著工程來進行的。Xcode工程對創(chuàng)建軟件產(chǎn)品需要用到的文件和資源進行組織,并使您可以對其進行訪問。無論您創(chuàng)建的是什么樣的產(chǎn)品,Xcode都會為您管理三種類型的信息:
源文件的引用,包含源代碼、圖像、本地化的字符串文件、數(shù)據(jù)模型、以及更多的信息。
目標,定義要制作的產(chǎn)品。目標將制作產(chǎn)品需要的文件和指令組織為一個可以執(zhí)行的連編動作序列。
執(zhí)行環(huán)境,您可以在這個環(huán)境中運行和測試軟件產(chǎn)品。執(zhí)行環(huán)境定義了運行產(chǎn)品時使用的程序。在很多情況下,這個程序就是產(chǎn)品的本身,但是不一定是這樣。另外,執(zhí)行環(huán)境還可以定義命令行參數(shù)和需要用到的環(huán)境變量。
Xcode工程中的三個元素按圖1所示的方式關聯(lián)在一起。
圖1:Xcode如何使用源文件引用、目標、和執(zhí)行環(huán)境。
當您執(zhí)行連編和運行命令(Command-R)時,Xcode會對指定的目標進行處理,該目標則執(zhí)行一系列對源代碼進行操作的動作,并最終生成一個產(chǎn)品。然后,Xcode就用當前活動的執(zhí)行環(huán)境運行該產(chǎn)品。
"但是請等一下" ,您可能會問:"為什么要建立一個執(zhí)行環(huán)境呢?難道我們不能直接運行產(chǎn)品嗎?" 這是個好問題。如果這僅僅是運行一個連編了的Cocoa應用程序的話,則定義一個執(zhí)行環(huán)境就太過復雜了。然而,有很多產(chǎn)品,比如插件,要求定義一個宿主應用程序才能運行產(chǎn)品。執(zhí)行環(huán)境也用于在調(diào)試器中運行產(chǎn)品。您甚至可以定義多個執(zhí)行環(huán)境,以便以不同的方式運行同樣的產(chǎn)品。
工程的組&文件列表
在Xcode的用戶界面上,組成工程的源文件引用、目標、和執(zhí)行環(huán)境都顯示在組&文件(Groups & Files)列表中。您現(xiàn)在已經(jīng)認識這些組件了,讓我們接著看看各個組件在組&文件列表中的位置,如圖2所示。下面我們看一下DotView實例程序。
如果您喜歡的話,可以自行進行操作。打開/Developer/Examples/AppKit/DotView/DotView.xcodeproj文件就可以了。
圖2:組&文件列表將很多不同類型的信息封裝在一個簡潔的界面上
您可以看到,所有的源文件引用都在一個工程中,您可以展開工程中的每個產(chǎn)品,看看它們是如何組織在一起的,如圖3所示。
圖3:將一個產(chǎn)品展開可以顯示其所有的連編組件,本例顯示的是一個Cocoa應用程序。
同樣地,您也可以展開一個目標,其內(nèi)容是生成產(chǎn)品所需要的各個步驟,如圖4所示。
圖4:展開一個目標,顯示生成產(chǎn)品需要的所有步驟。
工程漫游
組&文件列表中的源代碼文件、工程、目標、和執(zhí)行環(huán)境的下面是一組對工程內(nèi)容進行漫游的工具。這些條目以智能組(Smart Groups)的形式存在,智能組的工作方式和Finder中的智能文件夾(Smart Folders)及iTunes中的智能播放列表(Smart Playlists)一樣。這些工具如圖5所示。
圖5:Xcode的組&文件列表中含有幾個工具,可以幫助您在工程中進行漫游。
在某些時候,Xcode的新用戶會發(fā)現(xiàn)組&文件列表提供的功能太多了,特別是和他們在其它環(huán)境中用慣了的簡單文件列表相比較的時候。然而,一旦您熟悉了這些項目的功能,工程面板就會變成一個強大的工具,幫助您訪問Xcode提供的所有功能。
深入理解源文件引用
現(xiàn)在,您已經(jīng)了解了Xcode工程的基本組件,是時候?qū)⑽覀兊淖⒁饬﹃P注在源文件引用上了。如果您雙擊一個源文件引用,Xcode就會彈出一個適合的編輯器,使您可以對該文件進行修改。然而,您可能可以從上面的圖示中推斷出來,一個源文件引用也意味著一套指令,在源文件被加入到某個目標的時候執(zhí)行。舉例來說,當您將一個Objective-C源代碼文件(帶有.m后綴)加入到工程、并和某個目標相關聯(lián)的時候,該文件將會被加入到目標中的編譯源代碼(Compile Sources)步驟中,由GCC編譯器進行處理。
您可以通過Xcode的工程界面來控制一個源文件引用是否為某個目標的一部分,如圖6所示。
圖6:Xcode界面,使您可以快速調(diào)整源文件引用和目標的關聯(lián)關系。
您也可以通過源文件引用的Get Info(獲取信息)窗口來調(diào)整這些設置,訪問File > Get Info菜單項或者輸入Command-I可以打開該窗口。該窗口如圖7所示。
圖7:文件引用的Info窗口,使您可以指定當前文件屬于哪個目標,以及設置其它連編選項。
將之前圖示的Objective-C源文件包含到活動的目標中會使其被GCC編譯,并連接到最后的執(zhí)行文件中。如果您不希望將它包含到最后的產(chǎn)品中,則簡單地將它從生成產(chǎn)品的目標中刪除就可以了。
目標是如何被處理的
現(xiàn)在,讓我們把注意力轉(zhuǎn)移到目標上,并關注目標是如何被處理的。如果您詳細察看組&文件中的目標,就可以大致看出生成產(chǎn)品時發(fā)生了什么。圖8更加詳細地解釋了生成DotView產(chǎn)品的過程。
圖8:文件被加入到目標后進行的動作。
通過圖9所示的連編結(jié)果(Build Results)窗口,您可以看到連編一個目標的整個工作過程。您可以訪問Build > Build Results菜單項或輸入Command-Shift-B來彈出連編結(jié)果窗口。
圖9:連編結(jié)果窗口中按步驟顯示的目標連編過程。
連編規(guī)則和設置
那么,Xcode怎么知道如何處理目標中的文件引用呢?這個問題很簡單:Xcode根據(jù)與目標相關聯(lián)的連編規(guī)則和設置來進行連編。缺省的規(guī)則和設置指定:任何使用GCC支持的語言寫成的代碼文件,都由GCC來編譯。然而,如果您希望用先前的GCC版本來編譯C的源代碼文件,則可以通過目標的Info窗口來簡單地進行設置,如圖10所示。
圖10:目標的連編設置和連編規(guī)則,可以在相應的Info窗口進行修改。
現(xiàn)在,您已經(jīng)詳細了解了源文件引用和目標,讓我們看看Xcode工程的最后一部分:執(zhí)行環(huán)境。
執(zhí)行環(huán)境
我們之前已經(jīng)說過,執(zhí)行環(huán)境指的是產(chǎn)品如何在Xcode中運行。執(zhí)行環(huán)境定義了Xcode應該運行什么程序,以及如何運行這個程序。您可以建立多個執(zhí)行環(huán)境,以便在不同的條件下對產(chǎn)品進行測試。
簡單地說,執(zhí)行環(huán)境定義了下列內(nèi)容:
使用什么執(zhí)行文件,可能是目標連編之后生成的產(chǎn)品之一,或者系統(tǒng)中的其它執(zhí)行文件。
要傳遞給執(zhí)行文件的命令行參數(shù)。
啟動執(zhí)行文件之前需要在執(zhí)行環(huán)境中設置的環(huán)境變量。
應該使用的調(diào)試器,以及如何在調(diào)試器中運行執(zhí)行文件。
您可以在Info窗口中看到如何為執(zhí)行文件定義這些項目,如圖11所示。
圖11:您可以通過執(zhí)行文件的Info窗口考察產(chǎn)品運行的細節(jié)。
小結(jié):關于Xcode開發(fā)環(huán)境 理解 Xcode 工程的內(nèi)容介紹完了,希望本文對你有所幫助!