WindowsでObjective-Cのコードをコンパイルしてみる

プログラミング

前回、MinGWについての記事を書いたんだけど、実は流行りの
iPhoneやiPadのアプリ開発で興味があったからだったんだ。

iPhoneやiPadのアプリの開発言語はObjective-C。
もちろん、Macがないと本格的なアプリは開発できないんだけど、
とりあえずのObjective-Cの言語の勉強ならWindowsでいいかなと。

ただ、gccだけではiPhoneやiPadのアプリで使われるフレームワークとか
使えない。そこで、GNUstepのツールキットを使うことにする。
このツールキットはMinGWありきで使えるので注意すること。

まずは、ツールキットのダウンロードから。
インストールはこんな手順。

  1. GNUstepのダウンロードページを開く。
    http://www.gnustep.org/windows/installer.html
  2. Downloadの項目で"GNUstep MSYS System"、"GNUstep Core"、
    “GNUstep Devel"をダウンロードする。

んで、ツールキットをインストールするんだけど、順番があるようなので
次の順番でインストールする。

  1. gnustep-msys-system-0.25.1-setup.exe
  2. gnustep-core-0.25.0-setup.exe
  3. gnustep-devel-1.1.1-setup.exe

たとえば、gnustep-msys-system-0.25.1-setup.exeでの
インストールはこんな感じ。

  1. インストーラを起動して"Next"ボタンをクリックする。
  2. ライセンスの承諾をしてくれ(っていっても全部英語だけど…)と
    言ってくるので、"I Agree"ボタンをクリックする。
  3. コンポーネントを選んでくれって言ってくるけど、デフォルトで
    OKそうなので、"Next"ボタンをクリックする。
  4. インストールするフォルダを選んでくれと言ってくるので、
    適当なフォルダを選んで"Next"ボタンをクリックする。
  5. Windowsのスタートメニューに登録するショートカット名を
    聞いてくるので適当な名前を入力して"Install"ボタンをクリックする。
  6. インストールが始まるので、しばらく待っとく。
  7. 終わったよって教えてくれるので、"Finish"ボタンをクリックして
    インストーラを終了する。

準備が整いました!なので、試しにObjective-Cでお決まりの
“Hello World"を表示させてみる。コードはこんな感じ。

helloworld.h

#include <Foundation/NSObject.h>
#include <stdio.h>

@interface HelloWorld : NSObject
- (void) hello;
@end

helloworld.m
#import "helloworld.h"

@implementation HelloWorld
- (void) hello
{
	printf("Hello World.\n");
}
@end

int main(int argc, char **argv)
{
	id obj = [HelloWorld alloc];
	[obj hello];
	return 0;
}

コンパイルはプロンプトにこんなふうに入力して実行したよ。
意味はまだ調べてないけど、GNUstepのヘッダやライブラリに
パスを通しておかないとコンパイルエラーになっちゃうので、
かなり長いけど、根気よく入力してねぇ。
gcc -o helloworld.exe helloworld.m -I C:¥MinGW¥GNUstep¥GNUstep¥System¥Library¥Headers -L C:¥MinGW¥GNUstep¥GNUstep¥System¥Library¥Libraries -lobjc -lgnustep-base -fconstant-string-class=NSConstantString -enable-auto-import

結果はこんな感じになった。
確かに"Hello World."って言ってくれた。

ちなみに、Norton 2010だとSONAR保護機能ってのが働いて、
exeを削除しちゃうので機能を一時的にOFFにしてexeを実行した。

とまあ、そんなこんなでWindowsでもiPhoneやiPadで使うフレームワークを
Windowsでも使いつつ、Objective-Cのコンパイル&実行ができた。

んまま、参考になれば試してみてねぇ。

GNUstep.org
http://www.gnustep.org/