==========================================
Magwin方法
1、安装编译器
Objective-C的编译器有很多,其中LLVM属于从GCC发展出来的,主要使用在苹果的平台中,GNU可以使用GnuStep,网址是http://wwwmain.gnustep.org/,从这里可以下载Windows版本的gcc编译器,配合codeblocks可以编译调试object c程序。
进入下载页面,下载上面3个软件包,安装,例如安装到D:\GNUstep,
2、安装CodeBlocks IDE环境
下载地址:http://www.codeblocks.org/
3、配置编译器
安装好codeblocks之后,进入Settings->Compiler and debugger...,选择GNU GCC Compiler编译器,复制重新命名为“GNUstep MinGW Compiler“配置
编译其他选项录入:-fconstant-string-class=NSConstantString -std=c99
同时指定搜索目录:
》编译器的搜索目录是D:\GNUstep\GNUstep\System\Library\Headers
》linker的搜索目录设置为D:\GNUstep\GNUstep\System\Library\Libraries,同时设置linker的参数:-lobjc -lgnustep-base
或者可以在linker选项中加入D:\GNUstep\GNUstep\System\Library\Libraries下面的2个文件libgnustep-base.dll.a,libobjc.dll.a
设置编译器、连接器的搜索目录
4、配置语法、文件类型,关键字等
添加文件类型支持
1) 进入Settings->Environment...
2) 选择 Files extension handling 添加*.m
3) 进入 Project->Project tree->Edit file types & categories...
4) 在Sources, 下面添加 *.m到文件类型列表中.
添加语法高亮支持
1) 进入 Settings->Editor...
2) 选择 Syntax highlighting 进入Filemasks.... 添加*.m 到文件类型列表中.
3) 进入 Keywords... (紧靠Filemasks...) 添加下面的关键字到列表中
@interface @implementation @end @class @selector @protocol @public @protected @private id BOOL YES NO SEL nil NULL self |
5、代码测试
新建一个工程,修改main.c为main.m,录入下面代码
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"%@",@"hello world");
[pool drain];
return 0;
}
编译运行效果如下:
2012-03-07 17:33:49.711 objc1[6080] hello world Process returned 0 (0x0) execution time : 0.220 s |
转载地址:http://www.cnblogs.com/alex-tech/archive/2011/10/27/2227026.html
hello.m | |
1 2 3 4 5 6 7 8 9 10 |
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog (@"hello world"); [pool drain]; return 0; } |
接下來你可以在shell中輸入以下的指令來compile(編譯)它,但輸入這麼多的確十分麻煩
1 |
gcc `gnustep-config --objc-flags` -L /GNUstep/System/Library/Libraries hello.m -o hello -lgnustep-base -lobjc |
所以最好是用下面這種方式,使用Makefiles這個套件來協助編譯,將以下的程式碼貼到Notepad++或Ultra-Edit上,然後儲存到上面2.中的shell根目錄中,檔名為GNUmakefile(注意:沒有副檔名)
GNUmakefile | |
1 2 3 4 5 6 |
include $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME = LogTest LogTest_OBJC_FILES = hello.m include $(GNUSTEP_MAKEFILES)/tool.make |
然後在shell中輸入「make」就可以看到以下的畫面,沒有出現錯誤就是編譯完成了,在hello.m的目錄下會出現一個新增的obj目錄,裡面會有一個LogTest.exe。
==========================================================================
1: GNUstep
首先,目前windows下没有Objective-C的IDE存在,ObjectiveEClipse是一款可选择的插件,搭配Eclipse3.5+CDT6.0,但是已经停止更新。GNUstep是提供类似Cocoa(苹果OS的开发框架)的API和工具,目前支持GNU/Linux and GNU/HURD, Solaris, NetBSD, OpenBSD, FreeBSD, Darwin和Windows,免费使
用。这个项目使Objective C能在多数流行平台上开发和运行。
首先,目前windows下没有Objective-C的IDE存在,ObjectiveEClipse是一款可选择的插件,搭配Eclipse3.5+CDT6.0,但是已经停止更新。GNUstep是提供类似Cocoa(苹果OS的开发框架)的API和工具,目前支持GNU/Linux and GNU/HURD, Solaris, NetBSD, OpenBSD, FreeBSD, Darwin和Windows,免费使用。这个项目使Objective C能在多数流行平台上开发和运行。
在Windows下搭建Objective C开发环境,需要到GNUstep官方网站上下载,四个软件包:GNUstep MSYS System、GNUstep Core、GNUstep Devel、Cairo Backend。其中,前两个软件包是必须要安装的,第三个软件包是安装一些开发工具,比如:gcc、g++等,所以如果是学习Objective C的话,这个包也是必须要安装,第四个软件包是安装glib等库,这个包安装不安装根据具体情况而定。安装路径不建议出现中文,安装后在环境变量PATH中增加: C:\GNUstep\GNUstep\System\Tools;C:\GNUstep\bin;C:\GNUstep\mingw\bin,安装后运行GNUstep shell也就是安装目录下的msys.bat。测试一下gcc与make命令。
测试程序
1 #import <Foundation/Foundation.h>
2 int main (int argc, const char *argv[]) {
3 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
4 NSLog(@"Hello World!");
5 [pool drain];
6 return 0;
7 }
编译链接
1:直接gcc编译链接方式
gcc -o test test.m -I /GNUstep/System/Library/Headers -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -fconstant-string-class=NSConstantString
其中:
-I /GNUstep/System/Library/Headers 指明编译期间头文件包含目录
-L /GNUstep/System/Library/Libraries 指明连接的库文件
-lobjc链接属性,这样就不必显示的链接libobjc.a库,gcc收到这个链接属性会为我们完成这些事。
-fconstant-string-class=NSConstantString指定常量字符串类型为NSConstantString
2:GNUmakefile方式
写GNUmakefile如下:
GNUSTEP_MAKEFILES=/GNUstep/System/Library/Makefiles
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = test
test_OBJC_FILES = ./main.m
include $(GNUSTEP_MAKEFILES)/tool.make
注:其中TOOL_NAME定义为工程名称test,test_OBJC_FILES定义编译文件列表
在GNUmakefile目录下执行make命令,得到可执行文件。
3:搭配IDE,选用CodeBlocks
编译器设定
使用GNUStep安装的gcc,在C:\GNUstep\bin目录下。
1) Settings->Compiler and debugger...
2) 选择GNU GCC Compiler点击copy,重新命名,例如"GNU GCC Obj-C Compiler"
3) 设定GNU GCC Compiler的Toolchain executables路径为C:\GNUstep\bin,也就是GNUstep的gcc所在目录。
4) Compile settings->Other options添加-fconstant-string-class=NSConstantString
5) Linker Settings->Other Link Options中添加-lobjc -lgnustep-base选项。
如果出现问题,则可以选用另一种方式,去掉-lobjc -lgnustep-base选项,在Linker Settings->Link libraries中添加:
C:/GNUstep/GNUstep/System/Library/Libraries/libobjc.dll.a
C:/GNUstep/GNUstep/System/Library/Libraries/libgnustep-base.dll.a
6) Search directories->Complier添加头文件目录: C:\GNUstep\GNUstep\System\Library\Headers
2) 选择Filemasks...,添加*.m和*.mm
3) 选择 Keywords... 添加Keywords到列表框中
Keywords:
@interface @implementation @end @class @selector @protocol @public @protected @private id BOOL YES NO SEL nil NULL self
2) 选择build,选中 Compile file 和 Link file
3) 选择general,去除对File is read-only的选中
4) 注意,.h文件不要设置Compile file 和 Link file