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ディレクトリを指定することも可能)