俺のCMake!

技術

ご無沙汰しております。松山事務所の石丸です。

最近は晩酌しながら、youtubeでマインクラフト実況を観つつ、プログラムを書いています。

僕は今日も元気です。

 

 

icon-check 概要

趣味で作ってるゲームプログラムのCMakeファイル(CMakeLists.txt)を公開します。

C++でBoost、OpenGL、SDLを使用して、out-of-sourceビルドする設定です。(out-of-sourceビルドとは、ビルド時の中間ファイルでソースツリーを汚さないビルドの仕方)

Boost(http://www.boost.org/): C++ライブラリ
OpenGL(https://www.opengl.org/): 3Dグラフィックスライブラリ
SDL(https://www.libsdl.org/): クロスプラットフォームな低レベルマルチメディアライブラリ

 

icon-check 動機

先日、手元にMacBookProしかない状態で、ゲーム作りたいなって思ったんですね。
Macネイティブで作ると遊んでもらえる人が限られるからクロスプラットフォームにしてみるか。
と、気がついたらCMakeの書き方を調べ始めてました。
ただマインクラフトみたいな地形生成プログラムを書いてみたかっただけなんです。

 

icon-check 経緯

最初はただファイルを列挙してビルドするところから始めて、
OpenGLやSDLといったライブラリを使えるようにしたり、
中間ファイルでソースツリーが汚れるのが嫌だなとオープンソースプロジェクトの構成を参考にしたり、
何度かの修正を経てたどり着いた「オレオレゲーム開発用のシンプルなCMakeファイル」が、
誰かの参考になるかもしれないと思って、恥ずかしがらずに公開してみることにしました。

 

icon-check ディレクトリ構成

例えばこんな感じ。

CMakeLists.txtファイル: CMakeの設定ファイル
buildディレクトリ: ビルドするディレクトリ
includeディレクトリ: ヘッダーファイル置き場
srcディレクトリ: ソースファイル置き場

 

icon-check ビルドの仕方

Macの場合、terminal上で次のようにビルドします。
minecraftディレクトリにいるとして、

buildディレクトリに入って、一階層上からcmakeすることで、
buildディレクトリ以下にMakefileなどが生成されて、ソースツリーを汚さなくて済みます。
あとはmakeでビルドするだけ。コードを書いてはmakeの繰り返しです。

 

CMakeLists.txt

最後に、CMakeの設定ファイルCMakeLists.txtの内容は次のようになります。

 

クロスプラットフォームなアプリを作るためにCMakeを使っているのに、Mac依存、clang依存かもしれない設定が直書きなのが残念なところですね。いずれ修正したいと思います。

どこか1行でも誰かの参考になれれば幸いです。間違いや改善点などの指摘もお待ちしています!

それでは。

 

 

̃Gg[͂ĂȃubN}[Nɒlj