UE4でVisual Studioの代わりにJetbrains CLionと連携する

More than 1 year has passed since last update.


はじめに

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

msys2-pacman.png


CLionのインストール

Download CLionからお使いのOSに合わせたインストーラをダウンロードしてインストールします。

Windowsならexeもしくはzip、Macならdmg、Linuxならtar.gzなので特に迷うことはないと思います。


CLionの設定

MSYS2からインストールしたツールをCLionのSettings > Build, Execution, Deployment > Toolchainから登録します。Nameに適当な名前、EnvironmentからMinGWを選択、その隣にmingw64のパスを入力すれば他の項目は自動検出されます。

clion-settings.png

clion-toolchains.png

次にPluginsBrowse repositories...ボタンをクリックして出てきた画面でunrealを検索して出てくるUnreal Engine 4 SDK Supportプラグインをインストールして Restart CLion ボタンを押して再起動します。

このプラグインを導入するとUnreal C++特有のUPROPERTYなどで補完できるようになります。

clion-plugins.png

clion-ue4-plugin.png

clion-restart.png


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-plugin-folder.png


UE4の設定

まずは Edit > Plugins を開き、一番下の Project > Programming にある CLion Integration プラグインを有効にしてUE4を再起動します。

ue4-plugins.png

次に Edit > Editor Preferences... を開き General > Source CodeSource Code EditorCLion に切り替えます。

ue4-source-code-editor.png

最後に Edit > Project Settings... を開き Plugins > CLionC CompilerC++ CompilerCLion 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 ConfigurationsCMake Target Project はVisual Studioの構成マネージャーと同じものです。

開発中はデフォルトのままで大丈夫です。

Mono Executable はWindowsでは使わないので空白のままで構いませんが、MacとLinuxでは mono.exe のパスを設定してください。

ue4-clion-setting.png


使い方


CLionを開く


  1. まずはUE4のメニューの File > Generate CMakeListCMakeLists.txt を生成します。

  2. 次にその下の Open CLion から CLion を起動できます。

ue4-menu.png

プロジェクトを開いたときはシンボルの解析でしばらく負荷がかかるので画面下のプログレスバーがいっぱいになって消えるまで待ってください。


新規C++クラス作成時にCLionを開く

プラグインが有効ならば新規C++クラス作成時に CLion が起動されます。

ただし、UE4.17にGitHubのソースから導入したもの以外はソースのパスに空白が含まれているとうまく開けません。それが分かった時のお気持ちです。

デフォルトのUnreal Projectsフォルダめ…

仕方ないのでプロジェクトフォルダを空白を含まないパスに移してください。


CLionからビルドする

画面右上のセレクトボックスを MyProjectEditor-Development に切り替えて左のボタンを押すとビルドが始まり、完了するとUE4側にHot Reload Completeがポップアップします。

clion-build.png


その他


CLionのバグっぽいやつ

以下の画面はC++のFirst PersonテンプレートのMyProjectCharacter.cppを開いたもので数カ所、赤でエラーになっています。どうやらBindActionの最後の引数に親クラス名でメソッドを指定するとダメらしいのです。

CLionのBTSでエラーメッセージのNo matching function で検索するといくつか見付かるのでそのうちの1つなんでしょう。

clion-error.png


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/CLionSourceCodeAccessPull Requestしたものだったりします。一言くらい由来を書いてくれたらいいのに…


まとめ

JetBrainsのIDE好きな私としては至極残念!

ソース解析間違いが解消されてデバッグできるようになったらまた使ってみたいです。


記事中のリンク