Yunfi

Yunfi

tg_channel
github
email

VSCodeでclangの単一ファイルコンパイルとclangdチェック(C++)

前提#

いくつかの無謀な操作のせいで、以前使用していた Ubuntu が壊れてしまったので、この機会に wsl のディストリビューションを Arch に変更し、vscode でも llvm のファミリーを使用することにしました。
Arch のインストールは非常に簡単で、How to Setup | ArchWSL official documentation (wsldl-pg.github.io) のリンクに従えば、10 分以内に完了します。
vscode で llvm のファミリーを使用するのは非常に不便で、ネット上で多くのチュートリアルを探しましたが、大半はプロジェクト(例えば cmake)が必要です。しかし、大学生が宿題をするだけなら、直接 F5 する方が便利です。
主に二つの操作に分かれており、clang/lldb を使用してコンパイルとデバッグを行い、clangd を使用して補完とチェックを行います。この二つは互いに独立しており、どちらか一方だけを使用することも可能ですが、見つけたほとんどのチュートリアルは二つを混ぜて説明しています。

私の環境:
Windows11, Arch Linux on WSL2
私が考える動作する環境:
WSL をインストールできる任意の Windows バージョン

clang/lldb を使用した単一ファイルのコンパイルとデバッグ#

  1. clang++libc++ が正しくインストールされていることを確認します。

    1. clang++ -versionpacman -Qq|grep libc++ で確認します。
    2. もしインストールされていなければ、clang++ は clang パッケージに含まれているので、yay -S clang を実行します。libc++ も同様です。
  2. vscode で CodeLLDB プラグインが有効になっていることを確認します(ダウンロードエラーが出た場合は、エラーメッセージに表示された URL をブラウザで開いて手動でダウンロードし、インストールします)。

  3. tasks.json を .vscode フォルダーに配置します。

    • この tasks.json ファイルは vscode のドキュメントから取得したもので、詳細は Configure VS Code for Clang/LLVM on macOS (visualstudio.com) を参照してください。Linux を使用しているため、いくつか変更を加えました。
    • 私の習慣は、すべての実行可能ファイルを ./build/ フォルダーに配置することです。そうでない場合は、ステップ 3 と 4 のファイルパスを変更し、ステップ 5 を無視してください。
  4. launch.json を .vscode フォルダーに配置します。

  5. フォルダー内に新しい build フォルダーを作成します(そうしないとエラーが発生します!!!)。

  6. F5 を押すと、実行できます。

clangd を使用した自動補完とコードチェック#

  1. clangd がインストールされていることを確認します(clang++ と同じパッケージに含まれているはずです)。
  2. vscode プラグイン clangd をインストールします。
  3. ターミナルで which clangd を入力し、ファイルのディレクトリをメモします。
  4. settings.json を .vscode フォルダーに配置します。

.clang-format ファイルについて#

私の習慣は、直接 ~ に置くことです(もしあなたのコードがすべて~とそのサブフォルダーにある場合)。
生成する場合、公式ドキュメントのウェブページは非常に見づらいので、CLion で設定を行い、.clang-format としてエクスポートしました。視覚的にも便利です。
私の .clang-format を以下に示します。

トラブルシューティング#

clangd サーバーが常にクラッシュする#

  • 解決策:--folding-ranges パラメータを追加しないこと
    • 追加すると、ログを確認すると std::vector に関連するソースコードを分析中にクラッシュします。私のコードで std::vector を使用していなくても、原因は後で分析します。

WSL 内で VSCode が正しくネットワークに接続できない#

  • 主な原因は、vscode が WSL 内で Windows のプロキシ IP + ポート(一般的には 127.0.0.1:ポート)を使用するためです。そのため、WSL に http_proxy と https_proxy を設定し、127.0.0.1 をローカルネットワーク内の Windows の IP に変更する必要があります。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。