Bearについて
cmakeとか使ってないC/C++のプロジェクトでもclangdとかのlanguage serverのためにcompile_commands.json
がほしいとき
$ bear -- make
みたいにすることでcompile_commands.json
を勝手に吐いてくれるすごいやつがbear。
(--
は比較的新しいバージョンで必要になった気がする)
GitHub: rizsotto/Bear
しかしヘッダファイルまで含めてくれないので、ヘッダーを編集してる時にlspの補完とかエラーチェックが効かなくて困ることがしばしば。
上のIssueによればcompdb
なるものを併用すれば良いとのこと。
compdbのインストール
GitHub: Sarcasm/compdb
インストール:
$ pip install compdb
バージョンの表示:
$ compdb version
compdb version 0.2.0
使い方
Makefileが置いてあるディレクトリにて
$ bear -- make
$ compdb list | sponge compile_commands.json
compdb
はcompile_commands.json
を読み込んで新しいcompile_commands.json
を吐く。
以下のようにやるとcompile_commands.json
が読み込まれている間にリダイレクトで書き込まれて壊れてしまうのでmoreutils
のsponge
コマンドを使っている。この辺は適当に。
$ compdb list > compile_commands.json
(-p BUILD_DIR
でbuildディレクトリを指定することも可能)