WindowsでObjective-Cのコードをコンパイルしてみる
前回、MinGWについての記事を書いたんだけど、実は流行りの
iPhoneやiPadのアプリ開発で興味があったからだったんだ。
iPhoneやiPadのアプリの開発言語はObjective-C。
もちろん、Macがないと本格的なアプリは開発できないんだけど、
とりあえずのObjective-Cの言語の勉強ならWindowsでいいかなと。
ただ、gccだけではiPhoneやiPadのアプリで使われるフレームワークとか
使えない。そこで、GNUstepのツールキットを使うことにする。
このツールキットはMinGWありきで使えるので注意すること。
まずは、ツールキットのダウンロードから。
インストールはこんな手順。
- GNUstepのダウンロードページを開く。
http://www.gnustep.org/windows/installer.html - Downloadの項目で"GNUstep MSYS System"、"GNUstep Core"、
“GNUstep Devel"をダウンロードする。
んで、ツールキットをインストールするんだけど、順番があるようなので
次の順番でインストールする。
- gnustep-msys-system-0.25.1-setup.exe
- gnustep-core-0.25.0-setup.exe
- gnustep-devel-1.1.1-setup.exe
たとえば、gnustep-msys-system-0.25.1-setup.exeでの
インストールはこんな感じ。
- インストーラを起動して"Next"ボタンをクリックする。
- ライセンスの承諾をしてくれ(っていっても全部英語だけど…)と
言ってくるので、"I Agree"ボタンをクリックする。
- コンポーネントを選んでくれって言ってくるけど、デフォルトで
OKそうなので、"Next"ボタンをクリックする。
- インストールするフォルダを選んでくれと言ってくるので、
適当なフォルダを選んで"Next"ボタンをクリックする。
- Windowsのスタートメニューに登録するショートカット名を
聞いてくるので適当な名前を入力して"Install"ボタンをクリックする。
- インストールが始まるので、しばらく待っとく。
- 終わったよって教えてくれるので、"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/
ディスカッション
コメント一覧
helloworld.mとhelloworld.hはどこに入れておけばよいのでしょうか?
今はとりあえずGNUstepのインストールフォルダにいれてます。
あともう一つ、コンパイルしようとすると「gcc: error: helloworld.m: No such file or directory」と表示されます。
helloworld.mの置く場所が間違っているのでしょうか?
コメントありがとうございます。
申し訳ないのですが、当時の環境がなくなってしまったので、正確に原因が分からないかもしれませんが…。
プログラムファイルを置く場所は設定によって異なるので何とも言えませんが、記事にあるコンパイル方法なら、GNUstepのインストールフォルダにあるbinというフォルダにソースを置くとコンパイルできると思います。
※メッセージから原因を考えたら、helloworld.mを含むファイルが見つからなくてコンパイルできないと言われています。
記事に情報が不足していてお手数をおかけしますが、binフォルダ以下にhelloworld.mとhelloworld.hを置いて、コンパイルし直してみていただけないでしょうか?