Ubuntuの objective-c でHello world
Ubuntuの objecti-c でHello world
[環境]
Ubuntu Jaunty Jackalope 9.04 on VirtualBox 3.0.2
インストールするもの
build-essential gobjc libgnustep-base-dev
[したこと]
(1)インストール
$ sudo aptitude install gobjc libgnustep-base-dev
(2)ソースコードを書く
$ vi Hello.h
#ifndef HELLO_H_
#define HELLO_H_
#import <Foundation/NSObject.h>
#import <Foundation/NSString.h>
@interface CHello :NSObject
{
@private
NSString *m_message;
}
- (id) init:(const char *) message_;
- (void) dealloc;
- (NSString *) getMessage;
@end
#endif /*HELLO_H_*/
$ vi Hello.m
#import "Hello.h"
@implementation CHello
- (id) init:(const char *) message_ {
m_message = [[NSString alloc] initWithCString:message_ encoding:NSUTF8StringEncoding];
return (self);
}
- (void) dealloc {
[m_message release];
[super dealloc];
}
- (NSString *) getMessage {
return (m_message);
}
@end
$ vi main.m
#import <stdio.h>
#import <Foundation/NSAutoreleasePool.h>
#import "Hello.h"
int
main(int argc, char *argv[])
{
NSAutoreleasePool *pool;
id hello;
pool = [[NSAutoreleasePool alloc] init];
hello = [[CHello alloc] init:"hello, world"];
printf("%s\n", [[hello getMessage] cStringUsingEncoding:NSUTF8StringEncoding]);
[hello dealloc];
return (0);
}
$ vi Makefile
CC = gcc
CFLAGS = -Wall -g -I/usr/include/GNUstep/
LDFLAGS = -lobjc -lgnustep-base
LD = gcc
HELLO = hello
SRCS = main.m Hello.m
HEADS = $(SRCS:.m=.h)
OBJS = $(SRCS:.m=.o)
all: $(HELLO)
clean:
$(RM) $(RMFLAGS) $(OBJS) $(HELLO)
$(HELLO): $(OBJS)
$(CC) $(LDFLAGS) -o $(HELLO) $(OBJS)
.SUFFIXES:.o .m
.m.o:
$(CC) -c $(CFLAGS) $<
以下3行の次ぎにくる行は、左側をタブで1つぶん、開ける
clean:
$(HELLO): $(OBJS)
.m.o:
(3)コンパイル
$ make
(4)実行
$ ./hello
[参考]
Ubuntu 9.04でObjective-Cを試してみる - メモ帳
http://d.hatena.ne.jp/mtanaka/20090611/p1