CMakeでプロジェクトを作成する

ドウモ

**とりあえず同じようにやればプロジェクトが作成できる**
を目標にしてやっていきます、ω、

## インストール
まずはCMakeを**[ここ](https://cmake.org/)**から落としてきます
2016/03/22 現在の最新版は ver3.5.0 デス

Binaryを落としてくるのがよいでしょう
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/71846/33fd0fe1-4b43-c9a4-bb31-eab1752f4356.png)

落として来たら解凍してください
下のようにフォルダが入っていると思います
![無題1.png](https://qiita-image-store.s3.amazonaws.com/0/71846/42050da1-e90c-69be-8033-e0339f43f822.png)

binの中に入っている
こいつがGUI版の本体です
![無題2.png](https://qiita-image-store.s3.amazonaws.com/0/71846/0f8fca13-89b8-6db6-1f67-a0865a0cbfd9.png)

GUI何それおいしいの？
って人はGUI版を”アプリ”という単語に変換すればよいでしょう

とりあえず起動してみましょう
こいつがCMakeを実行するアプリになります
![無題3.png](https://qiita-image-store.s3.amazonaws.com/0/71846/1cb96a72-36f6-0d2f-778d-a7e8e97bc314.png)

## プロジェクトを作成する
デスクトップに**HelloCMake**というフォルダを作成します
![無題4.png](https://qiita-image-store.s3.amazonaws.com/0/71846/73e8198d-35a0-df19-1381-45a627d5f0c8.png)

その中に**src**というフォルダと**CMakeLists.txt**を作成します
![無題5.png](https://qiita-image-store.s3.amazonaws.com/0/71846/d938b25f-d6c3-d6a7-7ba9-e4518d34352a.png)

次に**src**フォルダ内に**main.cpp**と**CMakeLists.txt**を追加します
![無題6.png](https://qiita-image-store.s3.amazonaws.com/0/71846/a8f7b1f6-b262-b0e6-13cc-7e3da87beb99.png)

## CMakeListsの中身を書いていく
まずは一番上の階層のCMakeListsを書いていきます
![無題7.png](https://qiita-image-store.s3.amazonaws.com/0/71846/612770f0-3913-c98c-161a-1226a5e51b1b.png)
お察しの通り*HelloCMake*の部分がプロジェクト名になります
*add_subdirectory*でプロジェクトにフォルダを追加しています

次に**src/CMakeLists.txt**を書いていきます
![無題8.png](https://qiita-image-store.s3.amazonaws.com/0/71846/cbf4ff08-64aa-6b6e-22e7-c80b65b42f91.png)
add_executableで実行するソースコードをプロジェクトに設定しています

## 実際にCMakeを実行してみる
CMakeを実行して
Browse Source...を押して**HelloCMake**フォルダを指定します
![無題9.png](https://qiita-image-store.s3.amazonaws.com/0/71846/0b6eb93c-63d9-593d-bf9a-5a90eacfd2c0.png)

次に*Browse Build...*を押してビルドするプロジェクトを作成する場所を指定しますが
フォルダ作るの忘れてたので
フォルダ作りましょう＾ｐ＾

僕はVisual Studioでプロジェクトを作成するので
HelloCMakeフォルダの中に**vs2015**フォルダを作成します
![無題10.png](https://qiita-image-store.s3.amazonaws.com/0/71846/fe413125-9161-d586-d4ed-915d6ad5a5e8.png)

さてビルド用フォルダを作成したので
**Browse Build...**から指定してあげましょう
![無題11.png](https://qiita-image-store.s3.amazonaws.com/0/71846/4d0d2e92-1bf8-8d50-7c8b-3e5ee2385c2e.png)

これで準備は整いました
あとはポチるだけです

## プロジェクトを作成
**Configure**ボタンを押してください
![無題12.png](https://qiita-image-store.s3.amazonaws.com/0/71846/3128de90-6e57-a5c9-0a03-8dbca9e81e87.png)

作成するIDEを選択します
IDE？何それおいしいの？って人は
いつもコードを書いて実行させたりしてるアプリのことだと思ってくれればおｋです
VisualStudioとかXcodeとかEclipseとか
![無題14.png](https://qiita-image-store.s3.amazonaws.com/0/71846/3f9f9b00-1f60-e1e7-a2a3-4e0763652178.png)
選択したら**Finish**を押します

はい、**エラー**出ました
上からスクショ撮り直すのめんどいのでこのまま進めます＾ｐ＾

内容はsrcフォルダにCMakeLists.txtなくね？
あと、バージョン指定してなくね？
です、たぶん
![無題15.png](https://qiita-image-store.s3.amazonaws.com/0/71846/92f1fa78-0f40-878c-cbd3-91a310a70beb.png)

とりあえずsrcの中を見に行ったらアホやらかしてたので修正
![無題16.png](https://qiita-image-store.s3.amazonaws.com/0/71846/bb9ed15c-ec88-fa84-012f-0adbb2f2d730.png)
CMakeLists.txt.txt -> **CMakeLists.txt**

## バージョンの指定
指定しないと怒られるので指定します（めんどくさい
エラー
![無題17.png](https://qiita-image-store.s3.amazonaws.com/0/71846/695c4b29-056b-403e-39f9-97f93878db2a.png)
の通りにコードを追加します

バージョンの指定は一番上の階層のCMakeLists.txtに書いてあげるとよいでしょう
![無題18.png](https://qiita-image-store.s3.amazonaws.com/0/71846/3fb2e0cc-9233-f58f-83fa-1184c7edbcf8.png)

## 気を取り直してプロジェクト作成
もういちど**Configure**を押すとエラーが出てないことがわかります
この時点でどういった構成でプロジェクトを作成するかを決めています
**＊まだプロジェクトは作成されていない**

次に**Generate**を押せばプロジェクトが生成されます
以下のメッセージがでてくればおｋです
![無題19.png](https://qiita-image-store.s3.amazonaws.com/0/71846/33419f49-2caa-ac65-b23b-5caf3e21a755.png)

## 生成したプロジェクトを起動
なんかいろいろ生成されましたが
起動するのは**HelloCMake.sln**です
![無題20.png](https://qiita-image-store.s3.amazonaws.com/0/71846/09e983f8-5fc2-e2a1-d1b4-e12041986046.png)

起動すると
ALL_BUILDにフォーカスがスタートアッププロジェクトになっています
このままではmain.cppが実行されないので
HelloCMakeをスタートアッププロジェクトに設定します
![無題21.png](https://qiita-image-store.s3.amazonaws.com/0/71846/de18a2e8-f94b-75ed-9d48-f153e8e76999.png)

適当にコードを書いて実行してみます
![無題22.png](https://qiita-image-store.s3.amazonaws.com/0/71846/ab36bf17-c7e0-123f-290c-063dc8418939.png)
実行できました！


フォルダ分けをしたり、ライブラリの読み込みなどは
要望があれば記事を書きますが
おそらく先人の記事を読んだほうがいいと思われます、ω、

それでは、また逢う日まで！

PS:今回のプロジェクトをGithubに上げておきました
エラーとかでつまずいたら一度Gitから落としてきて試してみるといいかもです、ω、
[Lacty/HelloCMake](https://github.com/Lacty/HelloCMake)