GNUstepでobjective-cを学ぶ(1)

昨日、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 とかは大丈夫かな?

そんな訳で、準備ができたら、以下のソースがビルドできます。

#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;
}

実行結果がこれ。

$ ./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 もしておくのがベターです。

カテゴリー: 開発, Objective-C パーマリンク

GNUstepでobjective-cを学ぶ(1) への2件のフィードバック

  1. Jun Ishioka のコメント:

    Windows環境でiPhoneアプリ開発のための、Objective-c勉強の参考にさせていただきました。
    ありがとうございます。

  2. masuda のコメント:

    お役に立てたようでよかったです。
    私のほうは、まだ、この時点で止まっている…のが難ですが(苦笑)。
    去年の夏に買った mac mini を利用して iPad プログラミングをせねば。

コメントは停止中です。