Ubuntu 9.04でObjective-Cを試してみる
Objective-Cのインストール
% sudo aptitude install gobjc libgnustep-base-dev
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_*/
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
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); }
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) $<
% make gcc -c -Wall -g -I/usr/include/GNUstep/ main.m gcc -c -Wall -g -I/usr/include/GNUstep/ Hello.m gcc -lobjc -lgnustep-base -o hello main.o Hello.o % ./hello hello, world %