プロジェクトのファイルの include が読み込まれない

bear を使ってビルドコマンド(make, ninja, …)をラップし(bear -- ninja)、compile_commands.json を生成。それをプロジェクトルートにリンクするとうまくいくようになる

  • 2025/03/13 追記:ubuntu20 で bear を使ったときは、 bear sh build.sh のように -- を使わなかった。bear のバージョンが 2 だからか?

cf. https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#clangd

CITE

If compile_commands.json lives in a build directory, you should symlink it to the root of your source tree.
ln -s /path/to/myproject/build/compile_commands.json /path/to/myproject/

cf. https://uchan.hateblo.jp/entry/2018/12/29/104132

Cite

bear コマンドを使って compile_commands.json を自動生成してみたところ,cpp ファイルについては上手く生成されました.しかしヘッダファイルは全く無視されました.まあ当然ですよね.Makefile に登場するのは cpp ファイルだけですから.
ここで困ったことになります.Vim で編集するのは cpp ファイルだけではありません.当然,ヘッダファイルも編集します.ヘッダファイルも他のヘッダファイルをインクルードしますし,C++20 の機能を使ってプログラムを書きますから,cpp ファイルと同じようにコンパイルオプションを指定してあげないとうまく補完されません.

……とはいわれているが、ヘッダファイルも compile_commands.json だけでうまく補完が効くようになっていると思われるが……?