Linux で TooL のビルド

概要

TooL は,OpenGL をもとに動く,OBJ 形式ファイル(Wavefront の obj ファイルと mtl ファイル)の読み込みと描画の機能を持つソフトウェアである.OBJ 形式のメッシュを読み込んで表示するビューワとして使えるほか,ソースコードが公開されているので,C++ のプログラムに組み込んで使うこともできる(ライセンスは GPLv2.利用条件は各自で確認すること).

目次

前準備

インストールの前に,パッケージを最新の状態に更新しておくと,ビルド時のトラブルが減る.次のコマンドは,更新可能な全パッケージを更新する操作である(例は yum を使う Fedora 系ディストリビューションの場合).

yum check-update
yum update

前もって決めておく事項

前もってインストールしておくべきソフトウェア

次のソフトウェアをインストール済みであること.TooL のビルドには,C++ コンパイラ(gcc/g++),make,画像ライブラリ(JPEG,PNG,TIFF),SDL,Boost,OpenGL 関連のライブラリが必要である.

下記のように「yum install <パッケージ名>」でインストールできる.

yum install gcc
yum install libtool
yum install make
yum install libjpeg*
yum install libpng-devel
yum install libtiff-devel
yum install SDL-static
yum install SDL_*
yum install boost*
yum install OpenGL*

TooL のソースコードのダウンロードと解凍

  1. TooL の Web ページを開く

    https://sourceforge.net/projects/objloader/

  2. ソースコード(TooL-v0.2.5-src.tar.bz2)をダウンロードする.
  3. ダウンロードしたファイルを作業用ディレクトリ /tmp に置く.
  4. コンソール(端末)を起動する.

    これ以降の作業は,コンソール(端末)で行う.

  5. ダウンロードしたファイルを展開(解凍)する.
    cd /tmp
    mkdir TooL
    cd TooL
    tar -xvjf /tmp/TooL-v0.2.5-src.tar.bz2
    

ビルドとインストール

  1. OpenGL/glu.h などをインクルードできるようにするシンボリックリンクの設定

    ソースコードが OpenGL/glu.h のようなパスでヘッダを取り込む場合に備え,GL ディレクトリ内に OpenGL という名前で自分自身を指すシンボリックリンク(別名)を作る.次は Fedora の場合の設定例である.

    cd /usr/include/GL
    ln -s . OpenGL
    
  2. すべての cpp ファイルの先頭に「#include "stable.pch"」を追加

    プリコンパイル済みヘッダ stable.pch を各ソースが取り込むよう,Sources ディレクトリ内のすべての .cpp ファイルの先頭に #include "stable.pch" を書き加える.次のシェルスクリプトは,各 .cpp ファイルの先頭にこの行を挿入する.

    cd /tmp
    cd TooL
    cd Sources
    
    for i in *.cpp; do
      echo $i
      echo "#include \"stable.pch\"" > $i.tmp
      cat $i >> $i.tmp
      cp $i.tmp $i
    done
    
  3. Makefile の作成

    ビルド手順を記述した Makefile を Sources ディレクトリに作る.次は Fedora での例である.CFLAGS にヘッダの検索先,LIBS にリンクするライブラリを指定している.

    CC=g++
    CFLAGS=-I/usr/include/SDL -I/usr/include/GL
    LIBS=-L/usr/lib64 -lSDL_image -lSDL -lGLU -lGL -lboost_filesystem-mt -lboost_system-mt
    
    OBJS=Camera.o Exception.o Image.o KeyboardController.o Logger.o main.o Mesh.o MeshViewer.o MouseController.o MtlParser.o ObjMeshParser.o PolygonFace.o SceneObject.o State.o Texture.o Vertex.o WindowManager.o
    
    a.out: $(OBJS)
    	$(CC) -o a.out *.o $(LIBS)
    .cpp.o:
    	$(CC) $(CFLAGS) -c $<
    
  4. make の実行

    Sources ディレクトリで make を実行してビルドする.

    cd /tmp/TooL/Sources
    make
    
  5. make の結果の確認

    エラーメッセージが出ないことを確認する.

    ビューワ・プログラムが「a.out」というファイル名で生成される.

  6. ビューワ・プログラムのテスト実行

    生成された a.out を実行する.テクスチャマッピングなどが正しく表示できることを確認する.

    cd /tmp
    cd TooL
    Sources/a.out