1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2 を Zed で開き、適当に C++ でコードを書くと次のようなエラーが出ました。
g++ のコンパイルは通るのに...

image.png

原因

bits/stdc++.h は C++ の標準ヘッダではなく、GCC の標準ライブラリである libstdc++ が提供する独自のヘッダです。

Zed はエラー検出に clangd という言語サーバーを使用しており、デフォルトでは Zed 自身がダウンロードした clangd が動作します。この clangd はシステムにインストールされた libstdc++ のインクルードパスを認識できないことがあり、その結果 bits/stdc++.h が見つからずエラーになります。
ただし、コンパイル自体は g++ で行えば通ります。

対処法

clangd が g++ のインクルードパスを参照するように設定します。

clangd をインストールする

sudo apt update
sudo apt install clangd

.clangd を配置する

対象のディレクトリ(プロジェクトのルート)に .clangd という名前のファイルを作成し、以下の内容を記述します。

CompileFlags:
  Compiler: g++

これにより、clangd が g++ にインクルードパスを問い合わせるようになります。

Zed にシステムの clangd を使わせる

~/.config/zed/settings.json を作成し、以下の内容を記述します。

{
  "lsp": {
    "clangd": {
      "binary": {
        "path": "/usr/bin/clangd"
      }
    }
  }
}

設定後、Zed を再起動します。

結果

image.png

無事エラーが消えました!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?