ROSをcolconでビルドしたときにCLionでコード補完をする
はじめに
ROSの開発では、C++を主に使いますが、みなさんはIDEを使用されているのでしょうか?わたしは、C++以外にもAWS lambdaではpython、AWS CDKではnode、業務アプリケーションでは、ScalaやSQLを書く必要があり、それらを1箇所で管理するために JetBrains CLion が非常に都合が良いため、購入して使用しています。
ROSのビルドをcatkinで行っていたときは、トップレベルにメタパッケージとなるCMakeファイルを配置すればコードの補完では問題ありませんでしたが、AWS Robomakerを使用するにあたってcolconでビルドする必要があり、これまでは colcon build
して install
配下に生成されたパッケージ全てに対してCLionのCMakeオプションで CMAKE_PREFIX_PATH
に全てのパスを追加して補完をしていましたが、カスタムメッセージが認識できなかったり、1つのCMakeをロードすると異なるパッケージの参照ができなくなり、複数同時に開発する時に効率を上げるのが難しい状態でした。
そのため今回は、compile_commands.json
を生成し、こちらをCLionで読み込む方法をまとめました。
colcon-cmakeの対応を調べる
ワークスペースレベルでのcompile_commands.json
の生成は、こちらのPRですでにマージされています。ただしこれは、colcon-cmake >= 0.2.20
です。
そのため、まずはすでにインストールしているcolcon-makeのバージョンを確認します。
$ pip3 list | grep colcon
バージョンが 0.2.19
のため、まずはこちらをアップグレードします。
$ sudo apt update
$ pip3 install --upgrade colcon-common-extensions colcon-ros-bundle
$ pip3 list | grep colcon
0.2.25
になり使用することができるようになりました。
CLionの設定
clangdの設定
つぎにCLionのclangdの設定を確認します。2020.2より前のバージョンだと、ビルドインclangdバージョンの表記はありませんでした。
ここでは、最新にアップグレードしました。
CLionの最適化設定
最新にアップグレードすると、これまでの最適化設定が効かなくなっていましたので、下記を参考に設定します。
colconでビルドする
colconでビルド時に必要な設定は、CMakeのオプションをつけるだけです。
$ colcon build --cmake-args=-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON
$ ls -la build/compile_commands.json
-rw-r--r-- 1 wnwn wnwn 31714 8月 24 13:14 build/compile_commands.json
これでcompile_commands.json
が生成されていることが確認できました。
CLionのプロジェクト設定
次に生成したcompile_commands.json
をCLionのcompilation databaseに読み込みを行います。
すでにプロジェクトを開いている場合は、一度閉じて生成したcompile_commands.json
を選択します。
このときプロジェクトルートが、build配下となってしまいますので、src/my_project
に設定をします。
また、terminalのデフォルトパスもbuildになってしまいましたので、ワークスペース直下に設定しなおしました。
この時にgitリポジトリも認識されなくなってしまったので、手動で再度認識させなおしました。
これでセットアップは終了です。
コード補完の確認をする
すでに補完ができる状態になっているため、ファイルを開きます。これまでは複数パッケージをまたいで補完はできていませんでしたが、前述の設定でできていることを確認することができます。
またcompilation database
でcompile_commands.json
の自動読み込み設定が有効になっているため、colconで--packages-select
を用いてビルドした場合は、ビルドしたパッケージだけの補完になっていることが確認できます。
まとめ
- ROSをcolconでビルドした時にCLionでコード補完ができた
- ロボット開発をするときにいくつもの異なる言語やシステムをまたぐ必要があるため、CLionのようなIDEをうまく使うと開発効率を上げることができる
Author And Source
この問題について(ROSをcolconでビルドしたときにCLionでコード補完をする), 我々は、より多くの情報をここで見つけました https://qiita.com/wnwn/items/e2e77fe118dd8d249854著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .