===== 翻訳 ===== * English page is under URL. * https://machiaworx.net/miniscript/doku.php?id=build_soda_english ===== 概要 ===== * MiniScriptを利用したゲームを作るためのフレームワーク(エンジンと言っていい)のSodaというアプリケーションがある。 * https://github.com/JoeStrout/soda * このアプリは主にMac/Linuxで作っているためか、Windowsではビルド手順が後回しになっている。 * そのため、自分でビルドするための手順を作成してみた。 * なお、今後のプルリク等により状況が変化することも考えられるため注意。(2025/02/11時点の記述になる) ===== 手順 ===== - MSビルドツールのインストール - 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 - SDL2のインクルードファイルおよびライブラリファイルをビルドツールの読み込みフォルダに配置する。\\ ここで注意点は以下。(理由は後述) - clのパスが通ってるインクルードフォルダ内にSDL2フォルダを作成し、その中にSDL2のインクルードファイルを格納する - a.のSDL2フォルダの中にSDL2_image.hを格納する - a.のSDL2フォルダの中にSDL2_mixer.hを格納する - clのパスが通ってるライブラリフォルダ内「x86」フォルダもしくは「x64」フォルダに、SDL2/SDL2_image/SDL2_mixer関連のlibフォルダをすべて格納する。\\ 32bitでコンパイルするなら「x86」フォルダ、64bitでコンパイルするなら「x64」フォルダに格納する。 - ソースコードの修正(コミット B5294F6 を参照) - SDL_imageの読み込みフォルダ修正\\ これはSDL2_imageの読み込みが直読み込み前提になっているため。パスを指定しているならこhの記述でもいいが、「SDL2_image.hの方が、SDL2.hが同じフォルダにある前提で読み込もうとする」ため、これを優先してSODA側のソースコードを修正する。\\ SdlUtils.hの13行目、「#include 」にする。\\ (Linux環境とライブラリの作りに相違がある場合ディレクティブで分割するのを検討) - PixelDisplayの除算について計算がおかしいため修正\\ PixelDisplay.cppの90行目、「if (denom == 0.0f) return 0.0f ;」とする。\\ これは後でプルリクエストを出す予定。 - main関数の修正\\ Windows環境においては、どうもmain関数の形式が別途定められているようで、第2引数がconstだとその形式と相違があるため、SDL関連のライブラリのリンクができない。関数の定義について変更の必要あり。ただMac/Linuxでコンパイル可能な場合影響があることからディレクティブで分岐するのがいいと考える。\\ main.cppの332行目を「int main(int argc, char * argv[]) {」にする。\\ 参考:https://www.glamenv-septzen.net/view/584 - 加えて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 - 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のテストが通らなくなる事。(別の文字扱いになるんじゃないかと考える)