昨日、cygwinでobjective-cを学ぼうとしましたが、無理でした(笑)。
最終的に、iPadのプログラミングをしたいので、NSStringクラスなりの、mac osxで動くobjective-cでないと駄目なので、、、GNUstepを使うこうとにします。
実は、GNUstepに入っているobjective-cだけを使うのであれば、何処の環境でもいいわけですが、何故かmingwしか対応していません。cygwinには未対応です、と明言されています。
WinwdowsでObjective-C パート2 (NS~クラスも利用可) : ページアウトされた記憶の残骸
http://take-blizzard.cocolog-nifty.com/blog/2009/01/winwdowsobjecti.html
なところから、Windows版のものをインストールします。
GNUstep Windows Installer
http://www.gnustep.org/experience/Windows.html
cygwinと同じで、「c:\GNUstep」のディレクトリ配下に全てファイルが作られるので安心です。
Windowsのコマンドプロンプトから使うのであれば、以下にパスを通しておきます。
C:\GNUstep\mingw\bin\
C:\GNUstep\GNUstep\System\Tools\
そして、ビルドする場合は、以下のようなバッチファイルを作るとok。
gcc -o %1 %1.m
-I c:/GNUstep/GNUstep/System/Library/Headers
-L c:/GNUstep/GNUstep/System/Library/Libraries
-lobjc
-lgnustep-base
-fconstant-string-class=NSConstantString
-enable-auto-import
mingwのコマンドラインを使う場合は、
export INCLUDE=/GNUstep/System/Library/Headers
export LIB=/GNUstep/System/Library/Libraries
export CFLAGS=’-fconstant-string-class=NSConstantString -enable-auto-import’
と環境変数を設定しておいて、
gcc -o hello hello.m -lobjc -lgnustep-base -I $INCLUDE -L $LIB $CFLAGS
とすればok。
# 本来ならば、gccの環境変数を使えばいいんだろうけど、
# 何故か INCLUDE などを参照してくれない。
# ubuntu とかは大丈夫かな?
そんな訳で、準備ができたら、以下のソースがビルドできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #import <stdio.h> #import <Foundation/Foundation.h> #import <Foundation/NSObject.h> @interface Point : NSObject { int _x, _y ; } - ( void )set :( int )x :( int )y ; - ( void )print ; @end @implementation Point - ( void )set :( int )x :( int )y { _x = x; _y = y; } - ( void )print { printf ( "%d %d\n" , _x, _y ); } @end int main( void ) { id str = @ "hello objc++" ; NSLog( str ); Point *pt = [Point new ]; [pt set :10 :20 ]; [pt print]; [pt release]; return 1; } |
実行結果がこれ。
1 2 3 | $ ./a 2010-02-04 14:47:38.815 a[6820] hello objc++ 10 20 |
無事に、@付きのNSStringが使えます。
この手の基本的なクラス(Foundation/Base API)は、GNUstepのwikiで見ることができます。
# Xcodeなんかのヘルプでは別に参照があるんだろうけど。
GNUstepWiki
http://wiki.gnustep.org/index.php/Foundation
そんな訳で、windowsのコマンドラインでobjective-cがコンパイルできる環境が整った、と。
お次は、unit testですね。
OCUnit
http://www.sente.ch/software/ocunit/
http://homepage.mac.com/mindtools/OCUnitHowTo.html
なものを使うそうです。これは後日。
—
追記 2011/12/31
clang+llvm で objective-c 2.0 をコンパイルする | Moonmile Solutions Blog
http://www.moonmile.net/blog/archives/2252
gnustep だと @property が使えないので、objective-c のクラスの練習(あるいは、コーディング時)にちょっと困ります。なので、llvm もしておくのがベターです。
Windows環境でiPhoneアプリ開発のための、Objective-c勉強の参考にさせていただきました。
ありがとうございます。
お役に立てたようでよかったです。
私のほうは、まだ、この時点で止まっている…のが難ですが(苦笑)。
去年の夏に買った mac mini を利用して iPad プログラミングをせねば。