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