標籤:style blog http 使用 os strong
最近打算針對iPhone、iPod touch和iPad開發一些應用,所以,需要開始學習Objective C(蘋果推出的類似C語言的開發語言)。由於蘋果的自我封閉的產業鏈發展模式(從晶片、機器、開發語言、終端產品、服務)的限制,要想開發針對蘋果 iPhone等產品的應用程式,就需要用Mac機器,在Xcode的IDE上使用Objective C語言開發。Mac機器就不用說了,那比PC機器要貴不少(當然性價比還是很高的),所以,要想廉價方式學習Objective C就必須要在Windows上能搭建一個Objective C開發環境。好了,不說廢話了。
http://www.gnustep.org/experience/Windows.html
在Windows下搭建Objective C開發環境,需要到GNUstep官方網站上下載,四個軟體包:GNUstep MSYS System、GNUstep Core、GNUstep Devel、Cairo Backend。其中,前兩個軟體包是必須要安裝的,第三個軟體包是安裝一些開發工具,比如:gcc、g++等,所以如果是學習Objective C的話,這個包也是必須要安裝,第四個軟體包是安裝glib等庫,這個包安裝不安裝根據具體情況而定。
至於GNUstep是什麼東西,有什麼用處,這裡做個簡單的介紹:GNUstep就是提供類似Cocoa(蘋果OS的開發架構)的API和工具,目前支援GNU/Linux and GNU/HURD, Solaris, NetBSD, OpenBSD, FreeBSD, Darwin和Windows,免費使用的。這個項目使Objective C能在多數流行平台上開發和運行。有關詳細的介紹開始參考GNUstep的官方網站。
言歸正傳,下載上述軟體包後,點擊安裝就可以了。然後,需要確認是否安裝成功,並且是否能成功編譯Objective C代碼。
在“開始”菜單中“所有程式”下可以找到“GNUstep” -> “shell”,就會出console視窗,可以試試一些Linux命令(ls,cd,mkdir等)。
編寫一個Objective C代碼進行編譯運行測試。在這裡就用經典的“hello world”來說明:
#import <Foundation/Foundation.h>int main (int argc, const char *argv[]) { NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; NSLog(@"Hello World!"); [pool drain]; return 0;}
在Windows環境下用文字編輯器(Editplus,UE等),編寫上述代碼,並且儲存到
GNUstep安裝目錄下的/home下,取名為helloworld.m。在GNUstep的console視窗命令列下,
1、cd /home
2、gcc -o helloworld helloworld.m -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base
3、運行helloworld.exe
說明:第二步中的一些參 數明說,如果熟悉Linux/Unix下C/C++編譯的話,上述參數應該很熟悉,-I表示標頭檔尋找的路徑,-L表示庫檔案尋找路徑,-l表示需要連結 的庫檔案。但是,-fconstant-string-class=NSConstantString 對於這個參數可能比較陌生,這個參數主要是指定常量字串所使用的class。
改進:由於在GNUstep的視窗下不能複製,粘貼,手動打字容易出錯,所以,可以寫個shell指令碼,取名為test.sh,內容如下:
gcc -o "$1" "$2" -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base
然後和上面的一樣,在GNUstep的console視窗命令列下
1、cd /home
2、sh test.sh helloworld helloworld.m
3、運行helloworld.exe
說明:test.sh中的$1 和 $2分別表示擷取執行test.sh時傳進來的第1個和第2個參數,然後通過sh test.sh helloworld helloworld.m就是執行test.sh指令碼並傳入兩個參數,採用傳參數的目的是讓這個test.sh成為一個編譯的模板,這樣每次只要傳不同的參數就可以編譯運行。
helloworld.exe編譯並運行成功的話,說明windows下Objective C開發環境就搭建好了,這樣就可以開始以廉價方式的學習Objective C