Objective-Cに慣れるためにDebian/Ubuntu環境にObjective-CとGNUstepをセットアップしました。
gccは、Objective-Cをしていますが、NSで始まるクラスライブラリが使えないと話になりません。
Debian/Ubuntu環境には、aptパッケージが準備されているのでセットアップも簡単です。
セットアップ
ランタイムのgnustepと開発のためのgnustep-develパッケージをインストールします。
$ sudo apt-get install gnustep $ sudo apt-get install gnustep-devel
サンプルソースとMakefile
下記のようなサンプルを書きます。
$ cat hello.m #import <Foundation/Foundation.h> int main(int argc, const char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSLog(@"Hello, World!!"); [pool drain]; return 0; } $
Makefileは、次の通りです。
$ cat Makefile CFLAGS=$(shell gnustep-config --objc-flags) -lgnustep-base hello: hello.m gcc $(CFLAGS) $^ -o $@ clean: @rm -rf hello $
Makefile中のgnustep-configコマンドは、gnustep-develパッケージに含まれる環境に合ったコンパイルフラグを返してくれる便利なコマンドです。
コンパイル
makeコマンドを実行するとgccが呼び出されてコンパイルをします。
$ make gcc -MMD -MP -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -D_REENTRANT -fPIC -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -O2 -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -fgnu-runtime -fconstant-string-class=NSConstantString -I. -I/home/ksaito/GNUstep/Library/Headers -I/usr/local/include/GNUstep -I/usr/include/GNUstep -lgnustep-base hello.m -o hello $
実行
出来上がったhelloコマンドを実行すると、初めてのObjective-Cプログラミング完成です。
$ ./hello 2011-02-15 00:42:42.137 hello[10298] Hello, World!! $