Objective-C Foundation,GNUStepインストール 【初級編 第11回】

この記事は2012年11月6日に書かれたものです。内容が古い可能性がありますのでご注意ください。


Objective-C Foundation,GNUStepインストール 【初級編 第11回】

ここまでLinuxで基本的なコードの練習をするための環境構築を行い、
コードを少しずつ増やしてObjective-Cにおけるクラスのつくりなどの基本的な部分を説明してきました。
現状でObjective-Cを使用するケースといえばIPhoneやMAC用のアプリケーションとなるのではないでしょうか。
そこで少しIPhoneのコードに目を通してみると継承しているオブジェクトが違っています。
以下はMacの開発ツールであるxcodeの画面です。


Object.hではなくNSObject.hを読み込んでいます。また#importで「Foundation.h」というのを読み込んでいますね。
MACやIPhoneの開発では言語としてObjective-Cを使いますが、それ以外にもIPhoneのアプリケーションを作成するのに
使われるクラスやライブラリを再利用できるようにあつめたフレームワークというものを使用します。
例えばIphoneの画面にウィンドウを出す場合、OSのウィンドウを出すということはそのOSにあった処理が必要なため、
それぞれのOS用の変数や関数などが必要となります。
WindowsならWindows用のAPIが必要ですし、MACならMAC用のAPIが必要です。
そのためAPIを集めたOS用のフレームワークというものが提供されており、
Windowsなら.NETFramework、Mac OS版はCocoa、Iphone版がCocoa Touchというものになっています。

Cocoa Touchではファイルの処理やネットワーク、文字列操作などの機能を含んでいるFoundationフレームワークと
Audioなどの機能を含んだCore Audioなどが提供されています。

MACがあればそのままxcodeを使用すればよいのですが、ひとまず学習用にLinuxでFoundationを使うための環境設定を
しようと思います。といっても完全にMACやIPhoneのコードが動くわけではありませんが。

まずFoundationを使用するためにGNUstepをインストールします。GNUstepというのはCocoaの機能を提供するもので、完全に網羅できているわけではありませんが、Objective-Cの基本を学習する上では問題ないと思われます。

STEP1

その1でgcc-objcはyumを利用してインストールしましたが、CentOSではないようなので下記のサイトからダウンロードしてきます。
GNUstep download

今回は「gnustep-startup-0.28.0.tar.gz」をダウンロードします。

STEP2

展開します。
#tar xzf gnustep-startup-0.28.0.tar.gz

STEP3

このままインストールしようとすると「make」の時点でライブラリがありませんというエラーが以下のようにでます。
GNUstepには「tiff」(グラフィック用ですね)などのライブラリが必要となります。


そこで必要なライブラリをインストールしておきます。
#yum install libpng libpng-devel libtiff libtiff-devel libobjc libxml2 libxml2-devel libX11-devel libXt-devel libjpeg libjpeg-devel

STEP4

必要ライブラリをインストール後、先ほど展開してできたディレクトリに移動し「configure」スクリプトを実行します。
#cd gnustep-startup-0.28.0.tar.gz
#./configure

STEP5

コンパイルします。何かキーを押してくださいと出るので指示に従います。
#make


STEP6

インストールします。
#make install

インストールが終了すると以下のような画面が表示されます。

STEP7

上記のスクリーンショットを見てもらうとわかるようにセットアップのために「GNUstep.sh」を実行します。
#. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh

これで完了ですので、実際に確認してみましょう。
以前作成した「Person.h」のところで「Foundation.h」を読み込んでみます。2行目のところですね。

#import <objc/Object.h>
#import <Foundation/Foundation.h>

@interface Person:Object
{
        //属性を表す
//      @public
        @private
        double height;
        double weight;
}

//アクセサ
-(double)height;
-(void)setHeight:(double)personHeight;
-(double)weight;
-(void)setWeight:(double)personWeight;
-(id)initWithWeight:(double)personWeigth height:(double)personHeight;
@end

はい、うまくいきませんでした。
新しくいれたヘッダーなどが見つからないということです。

コードをコンパイルする際にオプションをつけることで解決します。
#gcc `gnustep-config –objc-flags` -L/usr/GNUstep/System/Library/Libraries -lgnustep-base Person.m Bmi.m main.m -o test

「-L」でライブラリを見つけるためのディレクトリを指定します。「-l」でライブラリを指定します。
gnustep-configは環境にあったコンパイルフラグを表示してくれるものです。試しに使用すると以下のようになりました。

これでコンパイルできると思います。

今回のまとめとしては

  • IPhoneやMACではCocoaというフレームワークを使用している
  • ・文字列処理などの機能を提供しているのはFoundationフレームワークであり、Linuxで利用するにはGNUstepをインストールする

といったところでしょうか。

  • このエントリーをはてなブックマークに追加

PAGE TOP