Objective-CでHello,World!してみる。
というわけで気が向いてしまったので、メモしておく。
なんていうか、初めての言語だから、いくらC言語を踏襲してるとはいえ、わけわけめだった。(特にコンパイルとリンク)
まずは必要なもの一式をインストール。
・gcc
・gcc-objc
・gnustep-base-devel
・clang, llvm, clang++
clang系については、まあ使いたいならってことで。
これでgccからObjective-Cのプログラムをコンパイルできるようになったと思う(なにかメモし忘れがあるかもしれません)。
そしてさっそうとHello,World書いてみる。
ソースプログラム(拡張子は[m]らしい)::Main.m
#import <Foundation/NSObject.h> //Objectを扱うのに必要 #import <stdio.h> //おなじみ、stdio.h //Helloクラス宣言 @interface Hello : NSObject { //ここに変数宣言などを書く? } -(void)say_hello;//void say_hello(void)メソッド宣言 @end//クラス宣言終了 //Helloクラス実装部 @implementation Hello //void say_hello()メソッド定義。 -(void)say_hello { printf("Hello, and GoodBye!!\n");//おなじみ、printf関数で出力 } @end int main(int argc, const char *argv[]){ //試しに、引数表示してみる。 for(int i = 0; i < argc; i++){ printf("argv[%d]::%s\n", i, argv[i]); } //試しにお馴染みの出力してみる printf("Hello, Objective-C!!\n"); //ここからObjective−Cっぽく書いてみる。 Hello *obj = [Hello alloc]; //こういうふうにインスタンス化するらしい? [obj say_hello]; //メソッドはこうやって呼ぶらしい? [obj release]; //終わったらこうやって解放するらしい? //これで終わり。 return 0; }
TGTOBJ=hello-objc ENTRY_SRC=Main.m OBJS= CC=gcc CXX=g++ CFLAGS=-O2 CXXFLAGS=$(CFLAGS) LDFLAGS= LIBS=-lobjc -lgnustep-base all: $(TGTOBJ) $(TGTOBJ): $(OBJS) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ENTRY_SRC) $(OBJS) $(LIBS) %.o: %.m $(CC) $(CFLAGS) -c $*.m -o $*.o .PHONY: clean clean: rm -vf $(OBJS) $(TGTOBJ)
$ make $ ./hello-objc arg1 argv[0]::./hello-objc argv[1]::arg1 Hello, Objective-C!! Hello, and GoodBye!!
以上。簡単なサンプルでした。
CCをclangにすればclangで同じようにコンパイルできます。