devel

各プロジェクトのビルドに先立ってSwigを実行するための作業

  1. ソリューション "Springhead2/src/Springhead10.sln" にRunSwigプロジェクト(makeプロジェクト)を追加。
  2. ソリューション "Springhead2/src/Springhead10.sln"に登録されている次のプロジェクトに対して、RunSwigプロジェクトに対する依存関係を設定。
    Base, Collision, Creature, FileIO, Foundation, Framework,
    Graphics, HumanInterface, Physics, Springhead
  3. "Springhead2/src" 以下に次のディレクトリ/ファイルを追加。
    "swig/etc/swigprojs.list"     設定ファイル
    "swig/bin/do_swigall.bat"     設定ファイル "swigprojs.list"
     に指定したプロジェクトに対してswigを実行するためのスクリプト
    "swig/bin/SwigAll.bat"        各プロジェクトのビルドを実行するスクリプト
      (RunSwigプロジェクトから実行)
設定ファイルには、swigを実行する必要があるプロジェクトを次の書式で指定します。依存するプロジェクトがない場合でも設定が必要です。
       <設定ファイル>        ::= <defline-list>
       <defline-list>        ::= <defline> | <defline><newline><defline-list>
       <defline>             ::= ε |

target-project><space><depend-project-list>

       <target-project>      ::= <project-name>
       <depend-project-list> ::= <depend-project> |

depend-project><comma><depend-project-list>

       <depend-project>      ::= ε | <project-name>
       <project-name>        ::= project name
       <newline>             ::= '\n'
       <space>               ::= ' '
       <comma>               ::= ','

現在の設定ファイルの内容は次のとおりです。これらは、<project>.i ファイルを基に作成しました。間違いがあればご指摘ください。

       Collision Foundation
       Creature Physics,Collision,Foundation
       FileIO Foundation
       Foundation
       Framework Foundation
       Graphics Foundation
       HumanInterface Foundation
       Physics Collision,Foundation

ビルドの手順は次のようになります。

  1. 最初にRunSwigプロジェクトがビルドされ、その結果、設定ファイルに指定されたプロジェクトに対してswigが実行される。
  2. 次に各プロジェクトがビルドされる。この時にもRunSwig.batが起動されるが“make: Nothing to be done for `all'.”となり実際にswigが動くことはない。

実行の結果は、

  • (1)の結果 → ログファイル "Springhead2Test/test/log/{StubBuild.log, StubBuildError.log}"
  • (2)の結果 → ログファイル "Springhead2Test/test/log/{Build.log, BuildError.log}" に出力され、svnにコミットされます。

今後新たにプロジェクト(swigの実行が必要なもの)を追加する場合には、次の作業を行なってください。

  1. 新たなプロジェクトを RunSwig プロジェクトに依存させる。
  2. 設定ファイル "Springhead2/src/swig/etc/swigprojs.list" に設定を追加する (これを忘れるとswig実行の対象となりません)。