前提#
いくつかの無謀な操作のせいで、以前使用していた 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 を使用した単一ファイルのコンパイルとデバッグ#
-
clang++とlibc++が正しくインストールされていることを確認します。clang++ -versionとpacman -Qq|grep libc++で確認します。- もしインストールされていなければ、clang++ は clang パッケージに含まれているので、
yay -S clangを実行します。libc++ も同様です。
-
vscode で CodeLLDB プラグインが有効になっていることを確認します(ダウンロードエラーが出た場合は、エラーメッセージに表示された URL をブラウザで開いて手動でダウンロードし、インストールします)。
-
tasks.json を .vscode フォルダーに配置します。
- この tasks.json ファイルは vscode のドキュメントから取得したもので、詳細は Configure VS Code for Clang/LLVM on macOS (visualstudio.com) を参照してください。Linux を使用しているため、いくつか変更を加えました。
- 私の習慣は、すべての実行可能ファイルを
./build/フォルダーに配置することです。そうでない場合は、ステップ 3 と 4 のファイルパスを変更し、ステップ 5 を無視してください。
-
launch.json を .vscode フォルダーに配置します。
-
フォルダー内に新しい build フォルダーを作成します(そうしないとエラーが発生します!!!)。
-
F5 を押すと、実行できます。
clangd を使用した自動補完とコードチェック#
- clangd がインストールされていることを確認します(clang++ と同じパッケージに含まれているはずです)。
- vscode プラグイン clangd をインストールします。
- ターミナルで
which clangdを入力し、ファイルのディレクトリをメモします。 - 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 に変更する必要があります。