2024/02/22(木) [n年前の日記]
#2 [prog] soil2をビルド
OpenGLで、テクスチャ画像のロードを楽にする、soli (または soil2) というライブラリがある。
_lonesock.net: SOIL (WebArchive)
_littlstar/soil: Simple OpenGL Image Library
_SpartanJ/SOIL2: SOIL2 is a tiny C library used primarily for uploading textures into OpenGL.
soil2 を Windows10 x64 22H2 + MSYS2 + mingw64 でビルドできるか試してみた。
_lonesock.net: SOIL (WebArchive)
_littlstar/soil: Simple OpenGL Image Library
_SpartanJ/SOIL2: SOIL2 is a tiny C library used primarily for uploading textures into OpenGL.
soil2 を Windows10 x64 22H2 + MSYS2 + mingw64 でビルドできるか試してみた。
◎ ビルド :
README.md 通りに作業していけば問題無いけど一応メモ。
Makefile を作るために Premake なるツールが必要になる。MSYS2の場合はパッケージが用意されているのでそれをインストールすればいい。ちなみに、MSYS2 上では pacman -Ss hoge でパッケージの検索ができて、pacman -S hoge でインストールできる。
git clone を使って、github から soil2 のソース一式を入手する。任意のフォルダで以下を実行。
premake5を使って、Makefile を作る。
make/windows/ というフォルダが作成されて、その中に色んな Makefile が作成された。中に入る。
makeを呼び出す際、config=xxxx と指定することで、以下の版の .dll、.lib が作れるらしい。
makeと打ってビルドする。MinGW64-x85_64 で作業していたので、x86_64 を選んでみた。
../../lib/windows/ 内に、以下の2つのファイルが生成された。
更に、../../bin/ 内に、以下の2つの実行サンプルも生成された。動作には SDL2 が必要らしい。
SDL2 は、MSYS2ならパッケージで用意されているのでインストールできる。
先ほど生成した 実行サンプルを実行してみる。色々なdllを要求されるけど、ひとまず、先ほど生成した soil2.dll を bin/ にコピー。他のdllは、MinGW64 の bin/ にパスが通っている状態なら、そちらから読み込んでくれる。
ということで、Windows10 x64 22H2 + MSYS2 で soil2 をビルドすることができると分かった。
MinGW64-x86_64 (64bit版) ではなく、MinGW64-i686 (32bit版) でも試してみた。そちらも同様に動いてくれた。.dll と .lib も生成された。
Makefile を作るために Premake なるツールが必要になる。MSYS2の場合はパッケージが用意されているのでそれをインストールすればいい。ちなみに、MSYS2 上では pacman -Ss hoge でパッケージの検索ができて、pacman -S hoge でインストールできる。
$ pacman -Ss premake $ pacman -S mingw-w64-i686-premake mingw-w64-i686-premake4 mingw-w64-x86_64-premake mingw-w64-x86_64-premake4
git clone を使って、github から soil2 のソース一式を入手する。任意のフォルダで以下を実行。
git clone https://github.com/SpartanJ/SOIL2.git cd SOIL2
premake5を使って、Makefile を作る。
premake5 gmake2
make/windows/ というフォルダが作成されて、その中に色んな Makefile が作成された。中に入る。
cd make/windows
makeを呼び出す際、config=xxxx と指定することで、以下の版の .dll、.lib が作れるらしい。
release_x86 release_x86_64 debug_x86 debug_x86_64
makeと打ってビルドする。MinGW64-x85_64 で作業していたので、x86_64 を選んでみた。
make config=release_x86_64
../../lib/windows/ 内に、以下の2つのファイルが生成された。
soil2.dll soil2.lib
更に、../../bin/ 内に、以下の2つの実行サンプルも生成された。動作には SDL2 が必要らしい。
soil2-perf-test-release.exe soil2-test-release.exe
SDL2 は、MSYS2ならパッケージで用意されているのでインストールできる。
$ pacman -Ss SDL2 $ pacman -S mingw-w64-i686-SDL2 mingw-w64-x86_64-SDL2
先ほど生成した 実行サンプルを実行してみる。色々なdllを要求されるけど、ひとまず、先ほど生成した soil2.dll を bin/ にコピー。他のdllは、MinGW64 の bin/ にパスが通っている状態なら、そちらから読み込んでくれる。
cd ../../bin/ ./soil2-test-release.exe ./soil2-perf-test-release.exe
- soil2-test-release.exe ... ウインドウが表示されて画像が描画された。
- soil2-perf-test-release.exe ... 画像群を読み込んで、かかった時間が表示された。
ということで、Windows10 x64 22H2 + MSYS2 で soil2 をビルドすることができると分かった。
MinGW64-x86_64 (64bit版) ではなく、MinGW64-i686 (32bit版) でも試してみた。そちらも同様に動いてくれた。.dll と .lib も生成された。
◎ 実行サンプルに必要なdll :
soil2-test-release.exe が要求するdllは以下。
つまり、以下のdllが別途必要になる。
soil2.dll 以外は、msys64/mingw64/bin/ の中からコピーしてくれば良さそう。bin/ に各dllをコピーしてみたら、MSYS2等にパスが通ってない状態でも soil2-test-release.exe が実行できた。
$ objdump -p soil2-test-release.exe | grep dll DLL Name: soil2.dll DLL Name: libgcc_s_dw2-1.dll DLL Name: KERNEL32.dll DLL Name: msvcrt.dll DLL Name: SDL2.dll DLL Name: SHELL32.dll DLL Name: libstdc++-6.dll
つまり、以下のdllが別途必要になる。
libgcc_s_dw2-1.dll libstdc++-6.dll SDL2.dll soil2.dll
soil2.dll 以外は、msys64/mingw64/bin/ の中からコピーしてくれば良さそう。bin/ に各dllをコピーしてみたら、MSYS2等にパスが通ってない状態でも soil2-test-release.exe が実行できた。
[ ツッコむ ]
以上です。