網上通過GNUstep使用gnu gcc在windows上運行objective-c的資料很多。但是當需要使用@autoreleasepool這種objective-c2.0引入的注解屬性的時候,gnu gcc不能成功編譯。這時候需要使用LLVM clang編譯器來解決這一問題。
1,GNUstep安裝: 搜索使用關鍵字gnustep windows installer,進入官網,可以看到下面一些官方安裝包:
| Package | Required | Stable | Unstable | Notes |
|---|---|---|---|---|
| GNUstep MSYS System | Required | 0.30.0 | - | MSYS/MinGW System |
| GNUstep Core | Required | 0.35.0 | - | GNUstep Core |
| GNUstep Devel | Optional | 1.4.0 | - | Developer Tools |
| GNUstep Cairo | Optional | 0.35.0 | - | Cairo Backend |
| PRojectCenter | Optional | 0.6.2-35 | - | IDE (Like Xcode, but not as complex) |
| Gorm | Optional | 1.2.22-35 | - | Interface Builder (Like Xcode NIB builder) |
來自 <http://www.gnustep.org/windows/installer.html>
作為開發人員,至少需要前面三個包。下載并安裝之,三個應用均安裝在同一路徑下,比如C:/GNUstep下。 2,clang安裝: 搜索關鍵字clang,進入LLVM clang的官網,下載一個clang安裝到GNUstep MSYS System的local目錄下,比如C:/GNUstep/msys/1.0/local/下。 3,捷徑: 上面兩步也可以改成直接找clang_gnustep_objective-c_for_windows這一資源,解壓最終得到一個名為GNUstep的文件夾,將其放到C:/下即可。前面的超鏈接是這個百度云鏈接:https://pan.baidu.com/s/1nv6WfgP,提取碼: 2qt2.
1, 進入GNUstep MSYS System的安裝目錄下,比如C:/GNUstep/msys/1.0/下,運行myss.bat腳本:
這會打開一個unix/linux風格的console:
在其中可以執行簡單的linux命令,同時也可以使用一些windows命令行命令。 2, 創建一個objective-c源文件: 創建一個測試文件夾:$ mkdir test 進入之:$ cd test 使用vim來創建并編輯一個源文件:$ vim test.m 上面三步可以搞定,但是很不舒服,可以這么做: 使用windows資源管理器進入C:/GNUstep/msys/1.0/home/user/目錄下: 在這里新建一個文件test,然后在其中創建一個文本文件test.m,使用文本編輯器來編輯內容。 3, test.m的內容可以寫:
4,編譯: 在前面打開的console中,執行下面的命令:
clang -o test test.m -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base注意:在有的objective-c教程里編譯使用的自動配置,即命令是:
clang -fobj-arc -o test test.m;執行結果可能會拋出 -fobj-arc is not supported on platforms using the legacy runtime 這么一個異常,如果遇到這種情況,請不要使用-fobj-arc參數,改而使用上文的全部詳細配置方式。 5:執行: $ ./test 
如果直接在windows的console下,或者直接雙擊執行上例生成的exe文件,結果會報文件缺失錯誤。 新增一個環境變量,GNUSTEP_HOME
GNUSTEP_HOME=C:/GNUstep;Path環境變量中加上:
%GNUSTEP_HOM%/bin;%GNUSTEP_HOME%/msys/1.0/bin;%GNUSTEP_HOME%/GNUstep/System/Tools這三個環境變量加上后,便可以直接在windows中雙擊執行生成的exe。
這里介紹的是Code::Blocks的配置。
注意:該配置的前提是已經配置了Part2的二環境變量問題所說的環境變量。 下載和安裝Code:Block好之后,要配置一下,才可以使用。 1,編譯器選擇,settings->compiler打開編譯器配置對話框,select compiler中選擇LLVM clang compiler,點擊copy按鈕,設置一個名字,比如myClang。 2,編譯器配置:compiler settings的other compiler options 中輸入:
-IC:/GNUstep/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -LC:/GNUstep/GNUstep/System/Library/Libraries
3,鏈接器配置有兩種方式: (1)linker settings的other linker options中輸入:
(2)linker settings的link libraries中選擇下面兩個文件: C:/GNUstep/GNUstep/System/Library/Libraries/libgnustep-base.dll.a 和 C:/GNUstep/GNUstep/System/Library/Libraries/libobjc.dll.a tips:在本機的測試過程中,使用第一種方式,有一定可能出現鏈接錯誤,報鏈接程序ld.exe找不到-lobjc -lgnustep-base文件。但第二種配置可以成功,推薦使用第二種配置。 4, debugger配置: setting->debugger,打開debuger調試器,給選擇一個dugger程序即可,比如這里使用gdb.exe。
**5,**Editor配置: 進入ssttings->Editor中的Syntax highlighting中,找到Syntax highlighting for Obejective C 點擊filemarks,向其中添加*.m項。 找到Syntax highlighting for Matlab項,移除其中的*.m項。 
1,新建一個項目,添加一個main.m源文件,其內容和前面的源文件一樣:
2,在main.m上右鍵,查看Properties,確保以下設置: Bin選項卡中的Compile file和和link file被勾選,這個可以在文件上右鍵->options中快速配置。 關鍵:Advanced選項卡中的For this compiler一定要選擇我們配置的編譯器。當然,可以在前面編譯器配置階段將我們配置的編譯器設為默認編譯器,即點擊那個Set as Default按鈕。 
3,編譯,并執行整個項目。

|
新聞熱點
疑難解答