ユーザ用ツール

サイト用ツール


build_soda

翻訳

概要

  • MiniScriptを利用したゲームを作るためのフレームワーク(エンジンと言っていい)のSodaというアプリケーションがある。
  • このアプリは主にMac/Linuxで作っているためか、Windowsではビルド手順が後回しになっている。
  • そのため、自分でビルドするための手順を作成してみた。
  • なお、今後のプルリク等により状況が変化することも考えられるため注意。(2025/02/11時点の記述になる)

手順

  1. MSビルドツールのインストール
  2. sodaのソースコード、SDL周辺開発APIセットのダウンロード(SDL2、SDL2_image、SDL2_mixer)
    SDL2/image/mixerについては、「devel-2.x.x-yyyy.zip」という名前のzipをダウンロードすること。
    soda: https://github.com/JoeStrout/soda
    SDL2: https://github.com/libsdl-org/SDL/releases/tag/release-2.32.0
    SDL2_image: https://github.com/libsdl-org/SDL_image/releases/tag/release-2.8.5
    SDL2_mixer: https://github.com/libsdl-org/SDL_mixer/releases/tag/release-2.8.1
  3. SDL2のインクルードファイルおよびライブラリファイルをビルドツールの読み込みフォルダに配置する。
    ここで注意点は以下。(理由は後述)
    1. clのパスが通ってるインクルードフォルダ内にSDL2フォルダを作成し、その中にSDL2のインクルードファイルを格納する
    2. a.のSDL2フォルダの中にSDL2_image.hを格納する
    3. a.のSDL2フォルダの中にSDL2_mixer.hを格納する
    4. clのパスが通ってるライブラリフォルダ内「x86」フォルダもしくは「x64」フォルダに、SDL2/SDL2_image/SDL2_mixer関連のlibフォルダをすべて格納する。
      32bitでコンパイルするなら「x86」フォルダ、64bitでコンパイルするなら「x64」フォルダに格納する。
  4. ソースコードの修正(コミット B5294F6 を参照)
    1. SDL_imageの読み込みフォルダ修正
      これはSDL2_imageの読み込みが直読み込み前提になっているため。パスを指定しているならこhの記述でもいいが、「SDL2_image.hの方が、SDL2.hが同じフォルダにある前提で読み込もうとする」ため、これを優先してSODA側のソースコードを修正する。
      SdlUtils.hの13行目、「#include <SDL2/SDL_image.h>」にする。
      (Linux環境とライブラリの作りに相違がある場合ディレクティブで分割するのを検討)
    2. PixelDisplayの除算について計算がおかしいため修正
      PixelDisplay.cppの90行目、「if (denom == 0.0f) return 0.0f ;」とする。
      これは後でプルリクエストを出す予定。
    3. main関数の修正
      Windows環境においては、どうもmain関数の形式が別途定められているようで、第2引数がconstだとその形式と相違があるため、SDL関連のライブラリのリンクができない。関数の定義について変更の必要あり。ただMac/Linuxでコンパイル可能な場合影響があることからディレクティブで分岐するのがいいと考える。
      main.cppの332行目を「int main(int argc, char * argv[]) {」にする。
      参考:https://www.glamenv-septzen.net/view/584
    4. 加えてmain関数内で参照している箇所があるのでこれを修正。
      main.cpp内324行目、“void PrepareShellArgs(int argc, char* argv[], int startingAt) {“に修正。
      参考:https://none53.hatenablog.com/entry/2017/04/29/QT_%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB_C2001_%E5%AE%9A%E6%95%B0%E3%81%8C_2_%E8%A1%8C%E7%9B%AE%E3%81%AB%E7%B6%9A%E3%81%84%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82
      https://torakichi.hateblo.jp/entry/2017/03/04/152827
  5. VS の開発者コマンド プロンプトを実行します。
    64bitのビルドを行う場合、「x64 NativeToolsCommandPrompt」を実行するのが早い。
    以下コマンドを入力する。
cd soda
cd src
cl -I . -I MiniScript -I compiledData -I SDL2 /EHsc /wd4068 /source-charset:utf-8 *.cpp MiniScript/*.cpp compiledData/*.c /Fesoda.exe SDL2.lib SDL2main.lib SDL2_image.lib SDL2_mixer.lib Shell32.lib /link /SUBSYSTEM:console 

問題

  • Assertのテストが通らなくなる事。(別の文字扱いになるんじゃないかと考える)
build_soda.txt · 最終更新: 2025/02/13 08:11 by machiaworx