ユーザ用ツール

サイト用ツール


build_soda

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
build_soda [2025/02/12 07:22] machiaworxbuild_soda [2025/02/13 08:11] (現在) machiaworx
行 12: 行 12:
 ===== 手順 ===== ===== 手順 =====
   - MSビルドツールのインストール   - 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+  - 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のインクルードファイルおよびライブラリファイルをビルドツールの読み込みフォルダに配置する。\\ ここで注意点は以下。(理由は後述)   - SDL2のインクルードファイルおよびライブラリファイルをビルドツールの読み込みフォルダに配置する。\\ ここで注意点は以下。(理由は後述)
     - clのパスが通ってるインクルードフォルダ内にSDL2フォルダを作成し、その中にSDL2のインクルードファイルを格納する     - clのパスが通ってるインクルードフォルダ内にSDL2フォルダを作成し、その中にSDL2のインクルードファイルを格納する
行 19: 行 19:
     - clのパスが通ってるライブラリフォルダ内「x86」フォルダもしくは「x64」フォルダに、SDL2/SDL2_image/SDL2_mixer関連のlibフォルダをすべて格納する。\\ 32bitでコンパイルするなら「x86」フォルダ、64bitでコンパイルするなら「x64」フォルダに格納する。     - clのパスが通ってるライブラリフォルダ内「x86」フォルダもしくは「x64」フォルダに、SDL2/SDL2_image/SDL2_mixer関連のlibフォルダをすべて格納する。\\ 32bitでコンパイルするなら「x86」フォルダ、64bitでコンパイルするなら「x64」フォルダに格納する。
   - ソースコードの修正(コミット B5294F6 を参照)   - ソースコードの修正(コミット B5294F6 を参照)
-    - SDL_imageの読み込みフォルダ修正\\ これはSDL2_imageの読み込みが直読み込み前提になっているため。パスを指定しているならこhの記述でもいいが、「SDL2_image.hの方が、SDL2.hが同じフォルダにある前提で読み込もうとする」ため、これを優先してSODA側のソースコードを修正する。\\ SdlUtils.hの13行目、「#include <SDL2/SDL_image.h>」にする。+    - SDL_imageの読み込みフォルダ修正\\ これはSDL2_imageの読み込みが直読み込み前提になっているため。パスを指定しているならこhの記述でもいいが、「SDL2_image.hの方が、SDL2.hが同じフォルダにある前提で読み込もうとする」ため、これを優先してSODA側のソースコードを修正する。\\ SdlUtils.hの13行目、「#include <SDL2/SDL_image.h>」にする。\\ (Linux環境とライブラリの作りに相違がある場合ディレクティブで分割するのを検討)
     - PixelDisplayの除算について計算がおかしいため修正\\ PixelDisplay.cppの90行目、「if (denom == 0.0f) return 0.0f ;」とする。\\ これは後でプルリクエストを出す予定。     - 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関数の修正\\ Windows環境においては、どうもmain関数の形式が別途定められているようで、第2引数がconstだとその形式と相違があるため、SDL関連のライブラリのリンクができない。関数の定義について変更の必要あり。ただMac/Linuxでコンパイル可能な場合影響があることからディレクティブで分岐するのがいいと考える。\\ main.cppの332行目を「int main(int argc, char * argv[]) {」にする。\\ 参考:https://www.glamenv-septzen.net/view/584 
-    - ソースコードにマルチバイト記述がある場合、BOMが付与さていないため改行が認識されない(本来はNG後述)\\ テキストエディタで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+    - 加えて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」を実行するのが早い。\\ 以下コマンドを入力する。   - VS の開発者コマンド プロンプトを実行します。\\ 64bitのビルドを行う場合、「x64 NativeToolsCommandPrompt」を実行するのが早い。\\ 以下コマンドを入力する。
  
   cd soda   cd soda
   cd src   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+  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 
  
 ===== 問題 ===== ===== 問題 =====
-  * BOM封入によって、Assertのテストが通らなくなる事。(別の文字扱いになるんじゃないかと考える) +  * Assertのテストが通らなくなる事。(別の文字扱いになるんじゃないかと考える)
-  * 自分の環境では、あまりよろしくないけど該当部分のテストを除去した上でビルドしてる。 +
-  * もしくは上記のBom封入によってエラーが出てくるのを許容するか。+
build_soda.1739312534.txt.gz · 最終更新: 2025/02/12 07:22 by machiaworx