gentooにopenFrameworksを入れた戦いの記録

ここのところちょこちょこいじっているopenFrameworksがとても楽しいので、デスクトップのgentooにも入れてみることにしました。 公式にはgentooに対応してくれてないっぽいので、がんばる。

Qt Creatorを入れる

Qt CreatorというIDEを使います。 eclipseでも良いような気がしますが、Qt Creatorならportageにあるので幸せです。

ってわけで、入れます。

# echo '>=dev-qt/qt-creator-4.0.0 ~amd64' > /etc/portage/package.keywords
# emerge qt-creator

最新版が欲しかったのでkeywordsをいじっていますが、そんなことしなくても古いバージョンで良ければ入ります。

コンパイルしている間に次に進みましょう。

ダウンロードと設置

ダウンロードページからopenFrameworksのtarballを落してきます。

伸張して出てきたディレクトリを適当な場所に設置します。 こいつはずっと使うので、邪魔にならない場所に置いてください。 私は/usr/local/lib/openFrameworksに設置しました。

依存関係をなんとかする

コンパイルしようとする

展開したディレクトリ以下のscripts/linux/にあるcompileOF.shというやつでopenFrameworksのコンパイルが出来ます。 なので、早速実行してみます。

$ cd scripts/linux
$ ./compileOF.sh
HOST_OS=Linux
checking pkg-config libraries:   cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl libpulse-simple alsa gl glu glew gtk+-3.0 libmpg123
makefileCommon/config.shared.mk:294: *** couldn't find some pkg-config packages, did you run the latest install_dependencies.sh?.  Stop.
there has been a problem compiling Debug OF library
please report this problem in the forums

めっちゃ怒られました。依存関係を満していないようです。

2016-05-27 追記

もしかしたらルート権限がないとコンパイル出来ないかもしれません。

以下のようなエラーが出たら多分そんな感じです。sudoを付けて試してみてください。

$ ./compileOF.sh
HOST_OS=Linux
makefileCommon/config.shared.mk:217: *** This package doesn't support your platform, probably you downloaded the wrong package?.  Stop.
there has been a problem compiling Debug OF library
please report this problem in the forums

足りないものを調べる

checking pkg-config libraries: 以降をコピーして、何が足りないのか調べてみます。

$ pkg-config --libs cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl libpulse-simple alsa gl glu glew gtk+-3.0 libmpg123
Package openal was not found in the pkg-config search path.
Perhaps you should add the directory containing `openal.pc'
to the PKG_CONFIG_PATH environment variable
No package 'openal' found
Package libpulse-simple was not found in the pkg-config search path.
Perhaps you should add the directory containing `libpulse-simple.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libpulse-simple' found
Package glew was not found in the pkg-config search path.
Perhaps you should add the directory containing `glew.pc'
to the PKG_CONFIG_PATH environment variable
No package 'glew' found

色々足りない。 環境によって何が足りないか違うと思うので、必ず実行してみてください。

解決する

良い感じに解決してくれるスクリプトが無いので、依存関係は自分で入れます。 うちの環境ではこうなりました。

# emerge media-libs/openal pulseaudio glew

そんなに難しくはない。アンインストールするとき面倒臭そうだけど。

emergeは続く

RtAudioが無い

依存関係をきちんと解決出来ていれば、あとは普通にコンパイル出来るはずです。やってみます。

$ ./compileOF.sh
-- 中略 --

/usr/local/lib64/openFrameworks/libs/openFrameworks/sound/ofRtAudioSoundStream.cpp:8:21: fatal error: RtAudio.h: No such file or directory
 #include "RtAudio.h"
           ^
compilation terminated.
makefileCommon/compile.core.mk:239: recipe for target '/usr/local/lib64/openFrameworks/libs/openFrameworksCompiled/lib/linux64/obj/Debug/libs/openFrameworks/sound/ofRtAudioSoundStream.o' failed
make[1]: *** [/usr/local/lib64/openFrameworks/libs/openFrameworksCompiled/lib/linux64/obj/Debug/libs/openFrameworks/sound/ofRtAudioSoundStream.o] Error 1
makefileCommon/compile.core.mk:213: recipe for target 'Debug' failed
make: *** [Debug] Error 2
there has been a problem compiling Debug OF library
please report this problem in the forums

できなかった。

RtAudioというライブラリが無いらしいです。粛々と入れます。

# echo 'media-libs/rtaudio ~amd64' > /etc/portage/package.keywords
# emerge rtaudio

FreeImageがない

さあ、openFrameworksをコンパイルしましょう。

$ ./compileOF.sh
-- 中略 --

/usr/local/lib64/openFrameworks/libs/openFrameworks/graphics/ofImage.cpp:5:23: fatal error: FreeImage.h: No such file or directory
 #include "FreeImage.h"
             ^
compilation terminated.
makefileCommon/compile.core.mk:239: recipe for target '/usr/local/lib64/openFrameworks/libs/openFrameworksCompiled/lib/linux64/obj/Debug/libs/openFrameworks/graphics/ofImage.o' failed
make[1]: *** [/usr/local/lib64/openFrameworks/libs/openFrameworksCompiled/lib/linux64/obj/Debug/libs/openFrameworks/graphics/ofImage.o] Error 1
makefileCommon/compile.core.mk:213: recipe for target 'Debug' failed
make: *** [Debug] Error 2
there has been a problem compiling Debug OF library
please report this problem in the forums

できなかった。

今度はFreeImageですって。はいはい。

# emerge freeimage

出来た

無心になって再びopenFrameworksをコンパイルします。

$ ./compileOF.sh
-- 中略 --

HOST_OS=Linux
checking pkg-config libraries:   cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl libpulse-simple alsa gl glu glew gtk+-3.0 libmpg123
Done!

出来た。やっと!

ついでにプロジェクトジェネレーターというやつもコンパイルしておきましょう。 こいつがあると、新しいプロジェクトを作るのが楽ちんになります。

$ ./compilePG.sh

すんなり行く。しあわせ。

コンパイル出来るか確認する。

ここまで終わったら、サンプルで遊んでみることにします。

openFrameworksのディレクトリにあるexamples/というディレクトリに沢山のサンプルがあります。 適当なプロジェクトを選んで、makeしてやればコンパイル出来ます。 実行ファイルはbin/以下に出来るので、実行して遊んでみてください。

Qt Creatorの設定をする

openFrameworksのディレクトリのscripts/qtcreator/install_template.shといスクリプトを実行すると、Qt CreatorにopenFrameworksのテンプレートがインストールされます。

$ cd scripts/qtcreator
$ ./install_template.sh

何も表示されずに一瞬で終了したら成功です。多分。

qtcreatorを実行してみます。

$ qtcreator

新しいプロジェクトを選択して、openFrameworksというプロジェクトが追加されていれば成功です。 そこからプロジェクトを作ってopenFrameworksを楽しんでください。


いかがでしょうか、インストールには成功しましたでしょうか。 私は失敗しました。 新しいプロジェクトにテンプレートが表示されません。もうだめです。つかれました。IDEなしで生きていきます…。