在Windows下搭建Objective C开发环境,需要到GNUstep官方网站上下载。
第一步:下载安装
说明:我的目录是C:\GNUstep
第二步:安装完毕后,打开:开始菜单 -> 所有程序 -> GNUstep -> Shell
就会进入一个类似 Linux 的 Shell 环境,如下图所示:
下面我们进入 /home 目录,然后创建一个 app1 的子目录:
cd /home
mkdir app1
cd app1
这个 app1 的目录位于磁盘上的 D:\GNUstep\msys\1.0\home\app1 目录下。
接下来我们写一个简单的程序:将此文件命名为app1.m放在app文件夹下。
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello oschina");
[pool drain];
return 0;
}
然后我们用下面的命令来编译这个程序:
$ gcc -o app1 app1.m -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base
上面这个命令除了 -o 后面的参数你可以更改,其他都必须照写,否则就会出错。
-I表示头文件查找的路径,-L表示库文件查找 路径,-l表示需要链接的库文件。
但是,-fconstant-string-class=NSConstantString 对于这个参数可能比较陌生,
这个参数主要是指定常量字符串所使用的class。编译完就会在当前目录生成一个名为 app1.exe 的可执行程序。
输入 ./app1.exe 命令执行这个程序,执行结果:
2012-11-21 22:04:46.911 app1[4780] Hello oschina
再来一个复杂一点的程序 app2,app2 包含三个文件,分别是:
Main.m:
03 | int main( int argc, char *argv[]) |
05 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
06 | Calculate *cal = [[Calculate alloc] init]; |
11 | NSLog(@ "%i + %i = %i\n" , v, av, [cal num]); |
Calculate.h:
02 | #import <Foundation/Foundation.h> |
04 | @interface Calculate : NSObject |
11 | -( void ) setNum: ( int ) n; |
Calculate.m:
03 | @implementation Calculate |
10 | -( void ) setNum: ( int ) n |
编译方法更上面一样,只不过需要将两个 .m 文件都加进去:
1 | $ gcc -o app2 Main.m Calculate.m -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base |
运行结果: 2012-11-21 22:17:51.207 app2[3144] 5 + 10 = 15