ksaitoの日記

日々試したことの覚え書き

Objective-CをDebian/Ubuntuで使う

Objective-Cに慣れるためにDebian/Ubuntu環境にObjective-CGNUstepをセットアップしました。
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!!
$