はじめに
Unreal Engine 4 (UE4) その2 Advent Calendar 2017 3日目です。
私は以前からIntelliJ IDEAでJavaやScalaを書いていて、Unityが姉妹品のRiderに対応してぐぬぬと思っていたところにUE4もCLionと連携するプラグインのdotBunny/CLionSourceCodeAccessがあったので試してみました。
このプラグインを作ったMatthew DaveyはUnity5.5以前のバージョンでVSCode連携するエディター拡張dotBunny/VSCodeを作った人でもあります。
CLionとは
JetBrainsが提供するC / C++向けのIDEでWindows、Mac、Linuxで動きます。
姉妹品にIntelliJ IDEAやRider、Android Studioがあり、CLionも同じような使い勝手です。
丁度、11月28日にCLion 2017.3がリリースされてこの記事を書くにあたってタイミングも良いです。
そしてUE4とCLionを連携してできることは
- UE4EditorからCLionでC++のソースを開く
- CLionからビルドしてHot Reloadする
逆にできないことは
- CLionからゲームを実行
- CLionからゲームをステップ実行などのデバッグ
最後に微妙なところとして
- 規模が大きくなると遅くなる
- 型の解析が不十分でエラー判定される事がある
といった所で常用するにしても軽く使うにしても微妙で今後に期待です。
ですがLinuxにはリファクタリングできるIDEは少ないので導入する価値は大いにありそうです。
導入
MSYS2のインストール(Windowsの場合)
Windowsの場合、MSYS2でいくつかパッケージの導入が必要です。
これはCLionが使うビルドツールのcmakeのために必要なものです。
まずは MSYS2 instlalerからx86_64
のインストーラーをダウンロードしてサイトの説明通りにインストールします。
次にMSYS2のターミナルを開き、以下のコマンドを実行するとCLionで使うパッケージをインストールできます。
pacman -Sy mingw64/mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-clang mingw64/mingw-w64-x86_64-make
CLionのインストール
Download CLionからお使いのOSに合わせたインストーラをダウンロードしてインストールします。
Windowsならexeもしくはzip、Macならdmg、Linuxならtar.gzなので特に迷うことはないと思います。
CLionの設定
MSYS2からインストールしたツールをCLionのSettings
> Build, Execution, Deployment
> Toolchain
から登録します。Name
に適当な名前、Environment
からMinGW
を選択、その隣にmingw64のパスを入力すれば他の項目は自動検出されます。
次にPlugins
のBrowse repositories...
ボタンをクリックして出てきた画面でunreal
を検索して出てくるUnreal Engine 4 SDK Support
プラグインをインストールして Restart CLion
ボタンを押して再起動します。
このプラグインを導入するとUnreal C++特有のUPROPERTY
などで補完できるようになります。
CLionSourceCodeAccessのインストール
CLionSourceCodeAccessをインストールする手段は2つあり、1つはマーケットプレイスでもう1つはGitHubです。UE4のバージョン毎にダウンロード先が異なるので一覧にしました。
UE4のバージョン | ダウンロード先 |
---|---|
4.15 | GitHubのソース |
4.16 | GitHubのソースもしくはマーケットプレイス |
4.17 | GitHubのmasterブランチのソースもしくはマーケットプレイス |
4.18 | GitHubの4.18ブランチのソース |
4.17対応版は細かいバグ修正やちょっとした使い勝手を改良したPull Requestを取り込んでもらったのでGitHubのmasterブランチのソースから導入するのがおすすめです。
GitHubのソースを利用する場合はプロジェクトフォルダにPlugins
フォルダを作り、その中にCLionSourceCodeAccess
を展開します。
プロジェクトフォルダ名がMyProject
なら以下のようなフォルダ構成になります。
UE4の設定
まずは Edit
> Plugins
を開き、一番下の Project
> Programming
にある CLion Integration
プラグインを有効にしてUE4を再起動します。
次に Edit
> Editor Preferences...
を開き General
> Source Code
の Source Code Editor
を CLion
に切り替えます。
最後に Edit
> Project Settings...
を開き Plugins
> CLion
の C Compiler
と C++ Compiler
と CLion Executable
に次の表の値を設定します。
項目 | 値 | 補足 |
---|---|---|
C Compiler | C:/msys64/mingw64/bin/clang.exe | MSYS2でインストールしたclang のパス |
C++ Compiler | C:/msys64/mingw64/bin/clang++.exe | MSYS2でインストールしたclang++ のパス |
CLion Executable | clion64.exeのパス | インストーラでインストールすると C:\Program Files\JetBrains\ にあります |
CMake Target Configurations
と CMake Target Project
はVisual Studioの構成マネージャーと同じものです。
開発中はデフォルトのままで大丈夫です。
Mono Executable
はWindowsでは使わないので空白のままで構いませんが、MacとLinuxでは mono.exe
のパスを設定してください。
使い方
CLionを開く
- まずはUE4のメニューの
File
>Generate CMakeList
でCMakeLists.txt
を生成します。 - 次にその下の
Open CLion
からCLion
を起動できます。
プロジェクトを開いたときはシンボルの解析でしばらく負荷がかかるので画面下のプログレスバーがいっぱいになって消えるまで待ってください。
新規C++クラス作成時にCLionを開く
プラグインが有効ならば新規C++クラス作成時に CLion
が起動されます。
ただし、UE4.17にGitHubのソースから導入したもの以外はソースのパスに空白が含まれているとうまく開けません。それが分かった時のお気持ちです。
せっかくWindowsがDocuments and Settingsみたいなスペースが入ってるパスをやめたのに他のアプリでプロジェクトフォルダにスペース入れるのやめてほしい
— Mitsuhiro Koga (@shiena) 2017年11月2日
デフォルトのUnreal Projects
フォルダめ…
仕方ないのでプロジェクトフォルダを空白を含まないパスに移してください。
CLionからビルドする
画面右上のセレクトボックスを MyProjectEditor-Development
に切り替えて左のボタンを押すとビルドが始まり、完了するとUE4側にHot Reload Complete
がポップアップします。
その他
CLionのバグっぽいやつ
以下の画面はC++のFirst PersonテンプレートのMyProjectCharacter.cpp
を開いたもので数カ所、赤でエラーになっています。どうやらBindAction
の最後の引数に親クラス名でメソッドを指定するとダメらしいのです。
CLionのBTSでエラーメッセージのNo matching function
で検索するといくつか見付かるのでそのうちの1つなんでしょう。
Windowsのデバッガ
同じくBTSのCPP-8677 Support native MSVC debuggerで
No news yet, might come in mid/late 2018
とコメントされているのでデバッグできるのはまだ先のようです。
UE4.19以降
EpicGames/UnrealEngine#4142, Add project generation arguments in SourceCodeAccessors, CLion support to UBT, and a built-in version of the CLionSourceCodeAccessor でGitHub上でPull Requestが出されて中の人のコメントで
I'm in the process of merging this over. I did some updates to match our coding standard and fixed a bug in OpenSolutionAtPath() that had its return logic reversed.
と返信があるのでほぼ本体に取り込まれそうです。
ちなみにそのコメントの少し上で
There some great work being done for detection on Windows, will get that included this week.
とか言っていますが、これは私がdotBunny/CLionSourceCodeAccessにPull Requestしたものだったりします。一言くらい由来を書いてくれたらいいのに…
まとめ
JetBrainsのIDE好きな私としては至極残念!
ソース解析間違いが解消されてデバッグできるようになったらまた使ってみたいです。
記事中のリンク
- CLion関連
- CLion Integration関連
- その他