まず、ダウンロードのページからSFMLのSDKをダウンロードしてね。
SFML は SFMLで、分けておくのがよさげです。違うバージョンのを共存させられるようにもなるし、その方がいい感じですよね?
もちろん「Win32 アプリケーション」だよね。コンソールが欲しかったら「コンソールアプリケーション」でもいいのかも。
あと「空のプロジェクト」をチェックしておくと、自動生成される鬱陶しいコードに悩まされなくて済むよ。
じゃあ、そんなわけで、「main.cpp」というファイルをプロジェクトに作ってください。 なんでかって? チュートリアルなんで、黙って言うこと聞いてください。
(これで、VisualStudio が 「C++のプロジェクトなんだ(C言語じゃなく)」と理解してくれます)
では、SFMLのヘッダーとライブラリのパスを設定しましょう。
(ヘッダーは .hppのファイル、ライブラリは .lib のファイルです)
プロジェクトのプロパティ設定画面を開いて、下記のように設定します。
・ヘッダーファイルを置いたフォルダを登録:
C++ > 全般 > 追加のインクルードディレクトリ
・ライブラリを置いたフォルダを登録:
リンカー > 全般 > 追加のライブラリディレクトリ
上記2つのパスはデバッグモードでもリリースモードでも同じです。
なので、構成を「全ての構成」にした状態で設定しても問題なしです。
次のステップ。
ライブラリをリンクしましょう。
SFMLには5つのモジュールがあります。
(システム、ウィンドウ、グラフィックス、オーディオ、ネットワーク)
各モジュールごとに、1つずつ libファイルがあります。
設定は「リンカー > 入力 > 追加の依存ファイル」に書き込みます。
アナタが使いたい機能のモジュールのライブラリをリンクしてね。
実行時にDLLが必要なのがイヤだったら、スタティック版のを使ってください。 ファイル名に「-s」がついているやつがスタティック版です。
スタティック版を使う場合は、もう1つ設定が必要です。
プリプロセッサの設定に「SFML_STATIC」マクロを追加してください。
C/C++ > プリプロセッサ > プリプロセッサの定義
ダイナミックリンクライブラリとスタティックリンクライブラリの違いをご存知じゃないキミは、 検索エンジンに聞いてみてね。
そんなわけで設定完了だよ! レッツ動作確認!
main.cpp ファイルに、下記のサンプルを入力してね。
さて、ビルドの前に sfml-main モジュールをリンクしてくださいませ。 やり方は他のモジュールのときと同じです。 (デバッグモードなら sfml-main-d.libを、リリースモードなら sfml-main.lib をリンク)
ではビルドしてみましょう。ダイナミックリンクライブラリを使ってる場合は DLLを実行ファイルと同じフォルダに置くのを忘れないでね。 (DLLファイルは SFMLを解凍したフォルダの「bin」に入ってるよ)
ビルドが終わったら実行。問題なければ、↓のように表示されるはずだよ。
最後に、オーディオモジュール(sfml-audio)を使うときの注意点です。
オーディオモジュールは、さらに別の外部ライブラリを使ってます。 なので、オーディオモジュールを使うときには、そのライブラリも一緒に入れてあげないといけません。
(スタティックリンクのときも、ダイナミックリンクのときも同じ)
必要なファイルは「libsndfile-1.dll」と「OpenAL32.dll」です。
SFMLを解凍したフォルダの「bin」に入ってます。
実行ファイルと同じフォルダにコピーしてあげてください。
あなたの使ってる VisualStudioのバージョンに合うパッケージをダウンロードしてね。
じゃないとコンパイルできないよ。
もし、合うバージョンがないときは、SFML自体を自力でコンパイルしてね。
ダウンロードできた? じゃあ、好きな場所に解凍するといいよ。
ちなみに、ヘッダーとライブラリを、Visual Studio をインストールしてある場所に直接入れるのはおススメできませんです。SFML は SFMLで、分けておくのがよさげです。違うバージョンのを共存させられるようにもなるし、その方がいい感じですよね?
※ 訳注 ※
このページは SFML2.1 のチュートリアルです。現時点での最新版は SFML2.4.0 です(2016年08月)。 検索エンジン等で直接このページに来たお友達はご注意を。
お手元の SFML のバージョンをご確認の上、対応するバージョンのチュートリアルをご覧ください。
アプリケーションの種類は何がいいかな? このページは SFML2.1 のチュートリアルです。現時点での最新版は SFML2.4.0 です(2016年08月)。 検索エンジン等で直接このページに来たお友達はご注意を。
お手元の SFML のバージョンをご確認の上、対応するバージョンのチュートリアルをご覧ください。
もちろん「Win32 アプリケーション」だよね。コンソールが欲しかったら「コンソールアプリケーション」でもいいのかも。
あと「空のプロジェクト」をチェックしておくと、自動生成される鬱陶しいコードに悩まされなくて済むよ。
じゃあ、そんなわけで、「main.cpp」というファイルをプロジェクトに作ってください。 なんでかって? チュートリアルなんで、黙って言うこと聞いてください。
(これで、VisualStudio が 「C++のプロジェクトなんだ(C言語じゃなく)」と理解してくれます)
では、SFMLのヘッダーとライブラリのパスを設定しましょう。
(ヘッダーは .hppのファイル、ライブラリは .lib のファイルです)
プロジェクトのプロパティ設定画面を開いて、下記のように設定します。
・ヘッダーファイルを置いたフォルダを登録:
C++ > 全般 > 追加のインクルードディレクトリ
・ライブラリを置いたフォルダを登録:
リンカー > 全般 > 追加のライブラリディレクトリ
上記2つのパスはデバッグモードでもリリースモードでも同じです。
なので、構成を「全ての構成」にした状態で設定しても問題なしです。
次のステップ。
ライブラリをリンクしましょう。
SFMLには5つのモジュールがあります。
(システム、ウィンドウ、グラフィックス、オーディオ、ネットワーク)
各モジュールごとに、1つずつ libファイルがあります。
[モジュールと Libファイルの対応表] | ||||
モジュール | デバッグ(DLL) | デバッグ(スタティック) | リリース(DLL) | リリース(スタティック) |
システム | sfml-system-d.lib | sfml-system-d-s.lib | sfml-system.lib | sfml-system-s.lib |
ウィンドウ | sfml-window-d.lib | sfml-window-d-s.lib | sfml-window.lib | sfml-window-s.lib |
グラフィクス | sfml-graphics-d.lib | sfml-graphics-d-s.lib | sfml-graphics.lib | sfml-graphics-s.lib |
オーディオ | sfml-audio-d.lib | sfml-audio-d-s.lib | sfml-audio.lib | sfml-audio-s.lib |
ネットワーク | sfml-network-d.lib | sfml-network-d-s.lib | sfml-network.lib | sfml-network-s.lib |
設定は「リンカー > 入力 > 追加の依存ファイル」に書き込みます。
アナタが使いたい機能のモジュールのライブラリをリンクしてね。
デバッグモードとリリースモードとで、リンクするLibファイルが異なります。
「sfml-モジュール名-d.lib」というファイルはデバッグ用。
「sfml-モジュール名.lib」というファイルはリリース用です。
上記掲載の対応表をよく見てね。混ぜるな危険!
上の表にもあるように、ライブラリにはDLL版とスタティック版があります。「sfml-モジュール名-d.lib」というファイルはデバッグ用。
「sfml-モジュール名.lib」というファイルはリリース用です。
上記掲載の対応表をよく見てね。混ぜるな危険!
実行時にDLLが必要なのがイヤだったら、スタティック版のを使ってください。 ファイル名に「-s」がついているやつがスタティック版です。
スタティック版を使う場合は、もう1つ設定が必要です。
プリプロセッサの設定に「SFML_STATIC」マクロを追加してください。
C/C++ > プリプロセッサ > プリプロセッサの定義
ダイナミックリンクライブラリとスタティックリンクライブラリの違いをご存知じゃないキミは、 検索エンジンに聞いてみてね。
そんなわけで設定完了だよ! レッツ動作確認!
main.cpp ファイルに、下記のサンプルを入力してね。
#include <SFML/Graphics.hpp> int main() { sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!"); sf::CircleShape shape(100.f); shape.setFillColor(sf::Color::Green); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); window.draw(shape); window.display(); } return 0; }このサンプルでは関数名が main だけど、プロジェクトを作るときにウィンドウアプリケーションを選択してたら、関数名は WinMain にしてね。 でもそれって Windowsの仕様だから、LinuxとかMacとか、他の環境では同じコードはコンパイルできません。 だから SFMLでは main 関数も使えるようにしてあるのさー。スタンダード!
さて、ビルドの前に sfml-main モジュールをリンクしてくださいませ。 やり方は他のモジュールのときと同じです。 (デバッグモードなら sfml-main-d.libを、リリースモードなら sfml-main.lib をリンク)
ではビルドしてみましょう。ダイナミックリンクライブラリを使ってる場合は DLLを実行ファイルと同じフォルダに置くのを忘れないでね。 (DLLファイルは SFMLを解凍したフォルダの「bin」に入ってるよ)
ビルドが終わったら実行。問題なければ、↓のように表示されるはずだよ。
最後に、オーディオモジュール(sfml-audio)を使うときの注意点です。
オーディオモジュールは、さらに別の外部ライブラリを使ってます。 なので、オーディオモジュールを使うときには、そのライブラリも一緒に入れてあげないといけません。
(スタティックリンクのときも、ダイナミックリンクのときも同じ)
必要なファイルは「libsndfile-1.dll」と「OpenAL32.dll」です。
SFMLを解凍したフォルダの「bin」に入ってます。
実行ファイルと同じフォルダにコピーしてあげてください。