Windows 下使用 GNUstep 编译并运行 Objective-C 程序

来源:互联网 发布:防止监控qq软件 编辑:程序博客网 时间:2024/04/26 11:54
在Windows下搭建Objective C开发环境,需要到GNUstep官方网站上下载。
第一步:下载安装
GNUstep的官方网站http://www.gnustep.org/experience/Windows.html
四个软件包:GNUstep MSYS SystemGNUstep CoreGNUstep DevelCairo Backend
说明:我的目录是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:

01#import "Calculate.h"
02
03int main(int argc, char *argv[])
04{
05    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
06    Calculate *cal = [[Calculate alloc] init];
07    int v = 5;
08    int av = 10;
09    [cal setNum: v];
10    [cal add: av];
11    NSLog(@"%i + %i = %i\n", v, av, [cal num]);
12    [pool drain];
13    return 0;
14}
Calculate.h:
01//Calculate.h
02#import <Foundation/Foundation.h>
03
04@interface Calculate : NSObject
05{
06    @private int num;
07}
08
09-(int) num;
10
11-(void) setNum: (int) n;
12
13-(void) add: (int) n;
14
15@end
Calculate.m:
01#import "Calculate.h"
02
03@implementation Calculate
04
05-(int) num
06{
07    return num;
08}
09
10-(void) setNum: (int) n
11{
12    num = n;
13}
14
15-(void) add: (int) n
16{
17    num += n;
18}
19
20@end
编译方法更上面一样,只不过需要将两个 .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








0 0