build_soda
文書の過去の版を表示しています。
概要
- MiniScriptを利用したゲームを作るためのフレームワーク(エンジンと言っていい)のSodaというアプリケーションがある。
- このアプリは主にMac/Linuxで作っているためか、Windowsではビルド手順が後回しになっている。
- そのため、自分でビルドするための手順を作成してみた。
- なお、今後のプルリク等により状況が変化することも考えられるため注意。(2025/02/11時点の記述になる)
手順
- MSビルドツールのインストール
- sodaのソースコード、SDL周辺開発APIセットのダウンロード(SDL2、SDL2_image、SDL2_mixer)
SDL2/image/mixerについては、「devel-2.x.x-VC.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のパスが通ってるライブラリフォルダ内直下に、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 <SDL2/SDL_image.h>」にする。 - 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 - ソースコードにマルチバイト記述がある場合、BOMが付与されていないため改行が認識されない
テキストエディタでSimpleString.cppを開き、BOMを付与して保存する。
参考: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
- VS の開発者コマンド プロンプトを実行します。
64bitのビルドを行う場合、「x64 NativeToolsCommandPrompt」を実行するのが早い。
以下コマンドを入力する。
cd soda cd src cl -I . -I MiniScript -I compiledData -I SDL2 /EHsc /wd4068 *.cpp MiniScript/*.cpp compiledData/*.c /Fesoda.exe SDL2.lib SDL2main.lib SDL2_image.lib SDL2_mixer.lib Shell32.lib /link /SUBSYSTEM:console
build_soda.1739270450.txt.gz · 最終更新: 2025/02/11 19:40 by machiaworx