【Godot】サンプルをビルドする【GDExtension/C++】
GodotのGDExtensionの公式のサンプルをビルドしたい!
概要
この記事では、GGodotのGDExtensionの公式のサンプルをWindows用にビルドして、プロジェクトに認識させるまでの手順を掲載する。
仕様書
環境
- Godot 4.2.2
手順書
「環境構築編」と「ビルド編」と「テスト編」の3部構成です。
環境構築編
最初にGDExtensionの公式のサンプルのビルドに必要な最低限?(MSYS2じゃなくてMinGWのみをインストールした方が小さい)の環境を構築する。
- Python 3.11.5
- scons 4.8.0
- gcc(MSYS2) 9.2.0
Pythonはpyenv
とpipenv
を使ってインストールした。インストール手順は下記の記事を参照して下さい。他でPythonのプロジェクトを作ってる場合は、pyenv
でバージョン管理、pipenv
で仮想環境を利用した方が安全かもしれない。
仮想環境がプロジェクトのフォルダーの中に作られるようにするには下記の記事を参照して下さい。
scons
のインストールは一旦後にして、C++のコンパイラーをインストールする。
今回はWindowsでコンパイルするんだけども、LinuxやMacOSでもスムーズにビルドできるようにMinGWのgcc
を使う。私の都合であれなんだけども別のプロジェクトでMSYS2に含まれてるMinGWのgcc
を使ってたので、この記事でもこれを使う。
下記よりMSYS2のインストーラーをダウンロードしてC
ドライブ直下などにインストールする。
gcc.exe
があるC:\msys64\mingw64\bin
にパスを通す。
githubからgodot-cpp-4.2.2-stable.zip
をダウンロードする。今回は4.2.2のバージョン。
今回はgodot-cpp-4.2.2-stable.zip
をC:\gdextensions\godot-cpp-godot-4.2.2-stable
に展開したとして話を進める。
godot-cpp-4.2.2-stable
の中のフォルダーtest
がGDExtensionのサンプルとなってる。このフォルダーをコピー&リネームしてC:\gdextensions\extension-test
に配置する。
フォルダー構成は下記のような感じ。
gdextensions
extension-test
godot-cpp-godot-4.2.2-stable
extension-test
にPythonの仮想環境を作り、パッケージscons
をインストールする。
pip install
pip install scons
プロジェクトのフォルダーの中に.venv
というフォルダーが作られて、この中にPythonやパッケージがインストールされる。
scons
は.venv\Scripts\scons.exe
にある。
gdextensions\extension-test\SConstruct
を編集する。5行目のenv = SConscript
の引数を下記のように修正する。
env = SConscript("../godot-cpp-godot-4.2.2-stable/SConstruct")
次の行に下記を追加。ライブラリーを静的にリンクするオプション。
env.Append(
LINKFLAGS=[
"--static",
"-static-libgcc",
"-static-libstdc++",
]
)
ビルド編
Pythonのパッケージscons
を使って、GDExtensionをビルドする。
.venv\Scripts\scons.exe platform=windows use_mingw=yes custom_api_file=C:/gdextensions/godot-cpp-godot-4.2.2-stable/gdextension/extension_api.json dev_build=yes
オプションdev_build=yes
を指定するとデバッグでビルドされる。
ビルドに成功されるとgdextensions\extension-test\project\bin\libgdexample.windows.template_debug.x86_64.dll
が出力される。
テスト編
同じバージョンのGodotでプロジェクトを作って、プロジェクトのフォルダーの中にフォルダーbin
を作り、その中にgdextensions\extension-test\project\bin\libgdexample.windows.template_debug.x86_64.dll
とgdextensions\extension-test\project\example.gdextension
をコピーする。
godot_project
bin
libgdexample.windows.template_debug.x86_64.dll
example.gdextension
エディターでプロジェクトを開く。子ノードの追加でExample
とExampleMin
が表示されてれば、先ほどビルドしたGDExtensionが認識されてる。
まとめ(感想文)
重い処理を最適化するのにGDExtensionが使えるらしい。
参考文献・引用
下記の記事を参考にさせていただきました。ありがとうございました。