TOP > プログラミング関連 > SFML非公式翻訳トップ > 【非公式翻訳】SFML2.4チュートリアル > 開発環境を整える > Linux の場合

[原文(公式)]

◆◆ 開発環境を整える ~Linux の場合~ ◆◆
SFML2.4 非公式日本語翻訳
Linux で SFML を使うなら、ぜひこのページを読んでね!
SFML をインストールする方法と、SFML を使ったプログラムをコンパイルする方法を紹介するよ!
SFML をインストール
Linux に SFML をインストールするには、いろんな方法があるよ。
選択肢その1が一番かんたんだね。
ディストリビューションの公式のリポジトリに、キミが欲しいバージョンの SFML があるなら、 パッケージマネージャーで取得できるんだ。
たとえば、Debian なら、こんな感じ:
sudo apt-get install libsfml-dev

選択肢その3はちょっと大変。
SFML が依存しているライブラリや開発用のヘッダーファイルを全てそろえて、CMake をインストールして、 その上で、コマンドをあれこれと手作業で入力しなくちゃいけないのです。
だけど、その分、キミのシステムにぴったりの SFML が手に入るんだ。なにしろキミのシステム上でビルドしたんだからね。 もし、この獣道を進むつもりなら、ソースをコンパイルする方法のチュートリアル があるから、参考にしてね。

選択肢その2は、その3よりはだいぶ楽だよ。
欲しいバージョンの SFML が公式のリポジトリにない場合は、選択肢その2で手を打つのが手っ取り早いかもね。
まずはダウンロードのページ で SFML の SDK をダウンロード。圧縮ファイルを展開して、キミのマシンの好きな場所に配置だ。
マシンのアカウントの個人フォルダでもいいし(/home/[アカウント名]/sfml など)、 標準的なパス( /usr/local など)でもいいね。

もし、古いバージョンの SFML をインストール済みの場合は、 新しいバージョンと衝突しないように気をつけてね!
※ 訳註 ※
2.4.0 以降、公式サイトでダウンロードできるバイナリは 64bit版のみになりました。 32bit版が必要な場合はソースからビルドせよ、とのことです。
※ 訳註 ※
公式サイトには Linux用として「GCC - 64 bit」が置かれています。".tar.gz" 形式の圧縮ファイルです。
これを、Windows上で "Lhaplus" などのツールで解凍すると、ファイルが破損します。 なぜかというと解凍ツールが悪いわけではなく、Windows と Linux ではファイルシステムが異なるためです。 (正確にいうと、ファイルが破損するというより、シンボリックリンクが参照できなくなる)
SFML をインストールする Linux環境上で tar コマンドで展開すれば問題ありません
VMWare などで Windows環境と平行して作業する場合は気をつけてください。

・tar コマンド:

> tar xvfz SFML-2.4.0-linux-gcc-64-bit.tar.gz


Linux 上であっても、アーカイブマネージャーのような GUI ツールでファイルを抽出すると、やはりダメな場合があります。 tar コマンドを使っておくのが無難なようです。
SFML を使ったプログラムをコンパイル
さて、いよいよ 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 を標準的じゃないパスにインストールしたのかもしれないね。
じゃあ、環境変数 LD_LIBRARY_PATH を設定して、ダイナミックリンカさんに、SFML ライブラリさんたちの場所を教えてあげよう。
export LD_LIBRARY_PATH=<sfml-install-path>/lib && ./sfml-app

うまくいったら、↓こんなウィンドウさんと、こんにちわだよ。


※ 訳註 ※
最新の SFML を使うには、Linux の側も最新の環境でないとうまくいかないことがあるようで「あれがない」「これが古い」というエラーメッセージと格闘する羽目になったりします。 チュートリアルに書いてある通りにやってるのに妙なエラーが出てウガー! という場合は、一つ前のバージョンの SFML を使ってみると、案外すんなり動いたりもします。