Linux に SFML をインストールするには、いろんな方法があるよ。
- ディストリビューションのリポジトリから直接インストールする
- 公式サイトから SDK をダウンロードする
- ソースコードをコンパイルする
選択肢その1が一番かんたんだね。
ディストリビューションの公式のリポジトリに、キミが欲しいバージョンの SFML があるなら、
パッケージマネージャーで取得できるんだ。
たとえば、Debian なら、こんな感じ:
sudo apt-get install libsfml-dev
選択肢その3はちょっと大変。
SFML が依存しているファイルを全てそろえて、CMake をインストールして、
その上で、コマンドをあれこれと手作業で入力しなくちゃいけないのです。
だけど、その分、キミのシステムにぴったりの SFML が手に入るんだ。なにしろキミのシステム上でビルドしたんだからね。
もし、この獣道を進むつもりなら、
ソースをコンパイルする方法のチュートリアル
があるから、参考にしてね。
選択肢その2は、その3よりはだいぶ楽だよ。
欲しいバージョンの SFML が公式のリポジトリにない場合は、選択肢その2で手を打つのが手っ取り早いかもね。
まずは
ダウンロードのページ
で SFML の SDK をダウンロード。圧縮ファイルを展開して、キミのマシンの好きな場所に配置だ。
マシンのアカウントの個人フォルダでもいいし(/home/[アカウント名]/sfml など)、
標準的なパス( /usr/local など)でもいいね。
もし、古いバージョンの SFML をインストール済みの場合は、
新しいバージョンと衝突しないように気をつけてね!
※ 訳註 ※
公式サイトには Linux用として「GCC - 32 bits」と「GCC - 64 bits」の2つが置かれています。
どちらも ".tar.bz2" 形式の圧縮ファイルです。
これを、
ウィンドウズ上で "Lhaplus" などのツールで解凍すると、ファイルが破損するようです。
具体的には "lib" フォルダ内の "*****.so.2" および "*****.so.2.1" というファイルが、空ファイルになってしまいます。
SFML をインストールする Linux環境上で tar コマンドで展開すれば問題ありません。
VMWare などで ウィンドウズ環境と平行して作業される方は気をつけてください。
・tar コマンド:
> tar jxvf SFML-2.1-linux-gcc-32bits.tar.bz2
さて、いよいよ SFML を使ったプログラムをコンパイルして SFML のライブラリとリンクする方法だよ。
だけど、IDE についてのお話はしません(Code::Blocks とか Eclipse とか)。
Makefile の書き方や、IDE でのプロジェクトの作り方については、他の先生に教えてもらってね。
だけど、もしキミが Code::Blocks 使いだったら、
こっちのチュートリアルが役立つと思うよ。
Windows 向けのお話だけど、Linux でもほとんど同じです。違うのは、Linux の場合は、
SFML を標準的なパスにインストールしているなら、コンパイラとリンカのサーチパスを設定しなくてもいいってところです。
さて! まずはソースファイルを作ろう!
名前は何にしようかな? うーんうーん……よし、"main.cpp" だ! 普通だ!
中に SFML のサンプルコードを書き込むよー。
#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;
}
ファイルは作れたかな? じゃあ次はコンパイルだ!
g++ -c main.cpp
SFML を標準的じゃないパスにインストールしてる場合は、
コンパイラさんに、SFML のヘッダーファイル(.hpp のファイルさんたち)がどこにいるのか、教えてあげてね。
g++ -c main.cpp -I<sfml-install-path>/include
<sfml-install-path> の部分には、SFML をコピーしたディレクトリのパスを当てはめてね。
たとえば /home/yourAccountName/sfml みたいな感じ。
そしたら次は、出来上がったオブジェクトファイルを SFML のライブラリにリンクしてあげよう。
そうしたら、実行ファイルの出来上がりだよ。
SFML には 5つのモジュールがあるんだ(システム、ウィンドウ、グラフィックス、ネットワーク、オーディオ)。
それぞれのライブラリにリンクするには、コマンドラインの後ろに "-lsfml-xxx" をくっつけてあげてね。
たとえば グラフィックスモジュールなら "-lsfml-graphics" だよ。
対応するライブラリファイルのファイル名と見比べてみてね。 ファイル名冒頭の "lib" と、拡張子 ".so" が省略されてるね。
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
SFML を標準的じゃないパスにインストールしている場合は、
リンカさんに SFML のライブラリさんたち(.so のファイル群)がどこにいるのか教えてあげてね。
g++ main.o -o sfml-app -L<sfml-install-path>/lib -lsfml-graphics -lsfml-window -lsfml-system
よーし! それじゃあ実行してみよう!
./sfml-app
どうかな? うまくいったかな?
うまくいかなかったお友達は、SFML を標準的じゃないパスにインストールしたのかもしれないね。
じゃあ、ライブラリローダーさんに、SFML ライブラリさんたちの場所を教えてあげよう。
export LD_LIBRARY_PATH=<sfml-install-path>/lib && ./sfml-app
うまくいったら、↓こんなウィンドウさんと、こんにちわだよ。