概要
WindowsでEclipseを使いながらSDL2を使ったアプリケーションを作っていたところ、SDL2を静的にリンクさせることができたので、手順を書き残しておきます。
動作環境と前提条件
- Windows10 64bit
- Eclipse Mars.2 (4.5.2)
- CDTが必要です。
- SDL2(v2.0.4)
- 今回は32bitの実行ファイルを作成します。
前準備
Eclipseのインストール
インストール自体の手順は省略します。
CDTは入れておいてください。
MinGWのインストール
ここからmingw-get-setup.exeを入手します。
インストーラにしたがってMinGWをインストールします。
今回は以下の場所にインストールしました。
C:\MinGW
SDL2のインストール
ここから入手します。
Development LibrariesのSDL2-devel-2.0.4-mingw.tar.gzです。
ファイルを展開して任意のディレクトリに保存してください。
今回は以下の場所に格納しました。
C:\dev\SDL2\i686-w64-mingw32
プロジェクトの作成と設定
プロジェクトの作成
EclipseのメニューからFile
/New
/Project
を選択して、New Projectウィンドウを出します。
C/C++ Project
を選択してNextをクリックします。
Project Nameを入力し、Project typeからはEmpty Project
を、ToolchainsからはMinGW GCC
を選択してFinishをクリックします。
プロジェクトの設定
Project Explorerで作成したプロジェクトを選択し、メニューからProject
/Properties
を選択し、設定ウィンドウを出します。
環境変数
C/C++ Build
/Environment
を選択します。
MINGW_HOMEの値を、MinGWインストールしたパスに設定します。ビルド設定
C/C++ Build
/Settings
を選択します。
GCC C++ CompilerのIncludesを選択し、Include pathsにSDL2のincludeディレクトリのパスを追加します。
今回の場合だと以下のようになります。
C:\dev\SDL2\i686-w64-mingw32\include
MinGW C++ LinkerのLibrariesを選択し、Library search pathにSDL2のlibディレクトリのパスを追加します。
今回の場合だと以下のようになります。
C:\dev\SDL2\i686-w64-mingw32\lib
同じく、Librariesに以下の依存ライブラリを追加します。
結構多いので参考に画像も撮りました。あと順番もこの通りにしてください。
mingw32
SDL2main
SDL2
SDL2_mixer
(SDL2_mixerを使う場合のみ。今回は追加しなくて良い)
m
dinput8
dxguid
dxerr8
user32
gdi32
winmm
imm32
ole32
oleaut32
shell32
version
uuid
MinGW C++ LinkerのMiscellaneousを選択し、Linker flagsに以下を入力します。
-static -mwindows
以上です。
ソースコードを作成してビルドしてみよう
SDL2を使ったアプリケーションのサンプルコードとして、こちらを参考にします。
ほとんど流用ですが、SDL2のヘッダの指定が若干異なります。
#include <SDL2/SDL.h>
int main(int, char ** const) {
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow("Hey", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, 0);
SDL_Renderer* render = SDL_CreateRenderer(window, -1, 0);
SDL_Event ev;
while(true){
SDL_SetRenderDrawColor(render, 0, 0, 0, 255);
SDL_RenderClear(render);
while(SDL_PollEvent(&ev))
{
if (ev.type == SDL_QUIT)
return 0;
}
SDL_SetRenderDrawColor(render, 255, 0, 0, 255);
SDL_RenderDrawLine(render,10, 10, 400, 400);
SDL_RenderPresent(render);
}
return 0;
}
ビルドが成功して実行すると、ウィンドウが立ち上がり、中に赤い線が表示されていると思います。
おわりに
ビルド後の実行バイナリのサイズですが、動的リンク時は150KB弱だったのが、静的リンク時は5000KBを超えました。これはデバッグ用のオプション設定での結果です。
今回はWindowsでSDL2のアプリケーションをビルドする際に、SDL2を静的リンクする手順を書きました。
ご指摘等ありましたら、コメントにてお願いします。
おしまい!