文章目錄
我也是黑蘋果一族,不買 Mac 的原因各不相同,這裡就不說了。即便是裝了黑蘋果,由於需要在 Windows 上長時間工作,就想能不能在 Win 上弄個 OC 的編譯環境,這樣可以方便學習 OC,省的來回切換。
這篇文章的大部分內容均來自於網上,具體可參見《參考》部分。本文是作者在實際使用後整理所得,如有疏漏,請不吝賜教,謝謝。
安裝
上網搜了搜,這方面的資料真是不少,必備的東東是 GNUstep Developer Tools,可以參考這個連結 Windows Installer,安裝很簡單,按照順序 GNUstep System、GNUstep Core、GNUstep Developer 安裝即可,過程就不表述了。
安裝完成後,我們可以用“程式 -> GNUstep -> Shell” 來啟動一個類比 UNIX 控制台,在這下面可以完成開發、編譯、執行等工作。
開發
首先我們來寫一個 HelloWorld,簡單起見,我們在 C 盤根目錄下建立 HelloWorld.m 檔案,並儲存,代碼如下:
[cpp] view plaincopy
- #import <Foundation/Foundation.h>
-
- int main (int argc, const char *argv[])
- {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSLog(@"Hello World!");
- [pool drain];
-
- return 0;
- }
註:關於用什麼工具來編寫代碼,由於我也是初次使用,並沒有特別好的工具推薦,我自己使的是 UltraEdit。
編譯
由於 HelloWorld.m 是在 C 盤根目錄下,所以首先我們將路徑切換到 C 盤根目錄:
[plain] view plaincopy
- $cd C:\
註:cd 這種方式同樣適用於切換到任意磁碟機或任意子目錄下,路徑的組織圖與 windows 沒有區別,不區分大小寫。
編譯成目標碼
[plain] view plaincopy
- gcc -fconstant-string-class=NSConstantString -c HelloWorld.m -I /GNUstep/System/Library/Headers
執行上面的命令後,控制台不會有任何輸出,這是正確的,否則你需要去檢查原因了。同時在 C 盤根目錄下會產生一個 HelloWorld.o 的目標檔案,在下一步,我們將用它來編譯成可執行檔。
編譯成可執行檔
[plain] view plaincopy
- gcc -o HelloWorld HelloWorld.o -L /GNUstep/System/Library/Libraries/ -lobjc -lgnustep-base
C 盤根目錄下會產生 HelloWorld.exe
執行
我們可以直接在 Windows 控制台下執行 HelloWorld.exe,也可以在 Shell 視窗中執行:
在 Shell 視窗輸入:
[plain] view plaincopy
- ./HelloWorld.exe
輸出如下:
[plain] view plaincopy
- 2011-09-23 13:22:42.828 helloworld[5484] Hello World!
關於工作路徑
我們做開發時,項目不可能放在 C 盤根目錄下,一般都是有組織的,那麼如何編譯這類的檔案呢?其實方法很簡單,使用 cd 命令,進入到 .m 所在的目錄下,然後執行編譯。
Make
上面的編譯過程很繁瑣,稍有不慎就可能輸入錯誤,造成編譯失敗,其實還有一個更簡單的方法,就是建立一個 make 檔案,對於 GNUstep 來說,make 檔案名稱必須是“GNUmakefile”,內容如下:
[html] view plaincopy
- include $(GNUSTEP_MAKEFILES)/common.make
-
- TOOL_NAME=HelloWorld<strong>
- </strong>HelloWorld_OBJC_FILES=HelloWorld.m
-
- include $(GNUSTEP_MAKEFILES)/tool.make
HelloWorld 關鍵字部分為可替換為實際內容。GNUmakefile 檔案要求與 .m 檔案在同一目錄下。
make 的執行很簡單,進入 “GNUmakefile” 所在的目錄,在 Shell 視窗中執行 “make” 即可。這會在 “GNUmakefile” 所在目錄下產生一個 obj 目錄,obj 下包含了可執行檔和目標檔案等。
後記
簡簡單單,基本上沒什麼波折,就是工作路徑的問題煩了我一下,因為有人說在 GNUstep 安裝目錄下會有一個 “C:\GNUstep\home\username” 目錄,可我安裝後並沒有類似的東東,也許是版本不一致或是別的什麼原因吧,這已經不是問題了。
註:上面的問題是這樣的,後來我發現這個 HOME 還是有的,啟動 shell 後,輸入 pwd 命令,得到當前工作路徑為 /home/username,實際位置位於 “D:\GNUstep\msys\1.0\home\username”。
參考
- Objective-C:GCC+GNUstep配置 - 兔子吃南瓜
- Windows下編譯objective-C