C/C++ IntelliSense の構成
この記事では、Visual Studio Code で C++ 固有の IntelliSense の候補を提供するように、C/C++ 拡張機能を構成する方法について説明します。IntelliSense は VS Code に組み込まれている便利なツールで、コードをより速く、より効率的にコーディングするのに役立つさまざまなコード編集機能を提供します。たとえば、コード補完、パラメーター情報、構文の強調表示、コードアクション (電球)、およびメンバーリストはすべて IntelliSense を使用して生成されます。
C/C++ IntelliSense は、システムに C/C++ コンパイラがインストールされていることのみを必要とします。C/C++ コンパイラは、システムインクルードパスの場所やその他の設定など、C++ 固有の情報を IntelliSense に提供します。プロジェクトレベルの構成については、「プロジェクトレベルの IntelliSense 構成」セクションを参照してください。
C/C++ 拡張機能はいつコア IntelliSense 機能を構成しますか?
コンパイラは、コア IntelliSense 機能を構成するための唯一の要件です。IntelliSense 用のコンパイラを識別するために、C/C++ 拡張機能は、Clang、GCC、MinGW、cygwin、cygwin64、MSVC などのコンパイラをマシン上の一般的なパスでスキャンします。これらのコンパイラのいずれかが識別され、安全な場所にある場合、それらは IntelliSense 用に自動的に構成されます。それ以外の場合は、このコンパイラを IntelliSense 用に構成する必要があることを確認するように求める通知が表示されます。どちらのシナリオでも、選択されたコンパイラはデフォルトのコンパイラとしても設定されます。
IntelliSense が構成されているかどうかを確認する方法
IntelliSense が構成されていない場合、C/C++ 拡張機能は、IntelliSense を構成するというラベルの付いた警告サインとともに、ステータスバーに黄色のインジケーターを表示します。
構成するには、ステータスバーインジケーターを選択します。これにより、構成クイック選択が表示されます。クイック選択は、C/C++ コンパイラを選択またはインストールするのに役立ちます。
ステータスバーインジケーターが表示されない場合は、プロジェクトの c_cpp_properties.json
ファイルを確認することもできます。このファイルには、IntelliSense のすべての構成設定が保存されています。コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) から C/C++: 構成の編集 (UI) を選択して、このファイルに移動します。IntelliSense モード
をチェックして、構成を見つけてください。c_cpp_properties.json
ファイルの詳細については、スキーマ参照を確認してください。
IntelliSense を構成する方法
IntelliSense の構成は、ワークスペースに自動的に作成される c_cpp_properties.json
ファイルに保存されます。次の 3 つのオプションはすべて、c_cpp_properties.json
ファイルを編集するさまざまな方法です。
オプション 1. 構成クイック選択を使用して構成オプションを選択する
コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) に IntelliSense 構成の選択 と入力してクイック選択を開きます。これにより、C/C++ 拡張機能がマシン上で見つけたすべての構成オプションのドロップダウンが表示されます。
利用可能なオプションのいずれかを選択します。コンパイラを選択すると、このコンパイラはデフォルトで IntelliSense によって使用されます。IntelliSense の構成クイック選択には、IntelliSense の構成に使用するオプションを変更するために、いつでも戻ることができます。
クイック選択でオプションが利用できない場合は、システムでコンパイラを識別できませんでした。マシンを手動で参照するか、C/C++ コンパイラをインストールできます。Windows マシンにインストールするには、C/C++ コンパイラのインストール方法に関するステップバイステップのチュートリアルにリダイレクトする コンパイラのインストールを支援する オプションを選択します。macOS または Linux マシンでは、コンパイラのインストール を選択し、プロンプトに従って C++ コンパイラをマシンにインストールします。
オプション 2. UI を使用して IntelliSense 構成を編集する
コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) から C/C++: 構成の編集 (UI) を選択して、IntelliSense 構成を開きます。このビューは、c_cpp_properties.json
ファイルのユーザーインターフェースです。
コンパイラのパス フィールドを、プロジェクトのビルドに使用しているコンパイラのフルパスに設定します。たとえば、Linux で GCC のデフォルトのインストールパスを使用する場合、コンパイラのパスは /usr/bin/gcc
です。IntelliSense モード を、使用しているコンパイラアーキテクチャ固有のバリアントに設定します。
オプション 3. c_cpp_properties.json ファイルを直接編集する
c_cpp_properties.json
ファイルを直接編集して、構成をカスタマイズできます。コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) から C/C++ 構成の編集 (JSON) コマンドを使用すると、c_cpp_properties.json
ファイルがワークスペースの .vscode
フォルダーに作成されます。
compilerPath
変数を使用してコンパイラを追加します。この変数は、プロジェクトのビルドに使用しているコンパイラのフルパスです。たとえば、Linux で GCC のデフォルトのインストールパスを使用する場合、コンパイラのパスは /usr/bin/gcc
です。
c_cpp_properties.json
ファイルの詳細については、スキーマ参照を確認してください。
オペレーティングシステムに基づいて、以下の c_cpp_configuration.json
ファイルのサンプルを選択してください。
> Windows 上の c_cpp_configuration.json のサンプル
MinGW のデフォルトのインストールパスを使用する場合
{
"configurations": [
{
"name": "Win32",
"includePath": ["${workspaceFolder}/**"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"windowsSdkVersion": "10.0.22621.0",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "${default}",
"compilerPath": "C:/msys64/mingw64/bin/gcc.exe"
}
],
"version": 4
}
> macOS 上の c_cpp_configuration.json のサンプル
Clang のデフォルトのインストールパスを使用する場合
{
"configurations": [
{
"name": "Mac",
"includePath": ["${workspaceFolder}/**"],
"defines": [],
"macFrameworkPath": [
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "macos-clang-arm64"
}
],
"version": 4
}
> Linux 上の c_cpp_configuration.json のサンプル
GCC のデフォルトのインストールパスを使用する場合
{
"configurations": [
{
"name": "Linux-GCC",
"includePath": ["${workspaceFolder}/**"],
"defines": [],
"compilerPath": "/usr/bin/g++",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64",
"browse": {
"path": ["${workspaceFolder}"],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
プロジェクトレベルの IntelliSense 構成
コンパイラで IntelliSense を構成すると、コア IntelliSense 機能が提供されます。このセットアップは基本構成と呼ばれます。次のような、より複雑なユースケースシナリオの場合:
- 1 つまたは複数の異なるライブラリへの参照など、追加のインクルードパス
- 言語 (したがって IntelliSense) の動作に影響を与える特定のコンパイラ引数
IntelliSense を構成する他の複数の方法があります。これらの追加構成は、次のいずれかを介して提供できます。
c_cpp_properties.json
ファイルと関連設定- 別の VS Code 拡張機能の形式のカスタム構成プロバイダー (たとえば、Makefile Tools または CMake Tools 拡張機能)
compile_commands.json
ファイル
構成プロバイダー
カスタム構成プロバイダーは、C/C++ 拡張機能よりも正確な C++ IntelliSense 構成を提供する可能性のある VS Code の別の拡張機能です。たとえば、Makefile Tools または CMake Tools 拡張機能を構成プロバイダーにできる CMake または Make ビルドシステムの場合です。拡張機能を構成プロバイダーとして追加するには、構成クイック選択で拡張機能を選択するか、詳細設定 の下の 構成プロバイダー フィールドを編集して構成 UI に追加するか、configurationProvider
フィールドを c_cpp_properties.json
ファイルに追加します。たとえば、CMake 拡張機能の場合、追加するパスは ms-vscode.cmake-tools
になります。
C/C++ 拡張機能は、カスタム構成プロバイダーをシステムでスキャンします。カスタム構成プロバイダーが 1 つだけ識別された場合、この構成プロバイダーは IntelliSense 用に自動的に構成されます。複数の構成プロバイダーが識別された場合は、構成クイック選択を開いて、拡張機能が使用する必要があるものを選択する必要があります。
compile_commands.json ファイル
IntelliSense 構成を提供するもう 1 つのオプションは、プロジェクト内のすべてのファイルに使用される正確なコンパイルコマンドを記述した compile_commands.json ファイルです。このファイルは、CMake や Bazel などのビルドシステムによって、プロジェクトを構成するときにコマンドライン引数を設定することで生成されることがよくあります。compile_commands.json
ファイルは、「IntelliSense を構成する方法」セクションで説明されているのと同じ方法で、構成クイック選択、UI を使用した構成の編集、または c_cpp_properties.json
ファイルの直接編集によって構成用に選択できます。構成 UI では、ファイルは 詳細構成 および コンパイルコマンド フィールドの下に追加できます。たとえば、compile_commands.json
ファイルがワークスペースのルートにある場合は、コンパイルコマンド フィールドに ${workspaceFolder}/compile_commands.json
と入力します。それ以外の場合は、compileCommands
構成プロパティを使用して、c_cpp_properties.json
ファイルに直接追加できます。
コンパイルコマンドデータベースに、エディターで開いたファイルに対応する変換ユニットのエントリが含まれていない場合、基本構成 (c_cpp_properties.json
にあります) が代わりに使用されます (includePath
や defines
など)。C/C++ 拡張機能が基本構成に戻ると、言語ステータスバーインジケーター に、ステータスバーに IntelliSense を構成する というラベルが表示されます。
カスタム構成プロバイダーと compile_commands.json
ファイルを指定した場合、カスタム構成プロバイダーが IntelliSense 構成について最初にクエリされます。
プログラムに、ワークスペースにないヘッダーファイルまたは標準ライブラリパスにないヘッダーファイルが含まれている場合は、インクルードパス を変更できます。C/C++ 拡張機能は、コンパイラのパス で指定されたコンパイラをクエリしてインクルードパスを設定します。拡張機能がターゲットシステムライブラリのパスを見つけられない場合は、インクルードパスを手動で入力できます。
言語ステータスバーを使用して IntelliSense のアクティビティを確認する
言語ステータスバーを使用して、IntelliSense がファイルでアクティブに動作しているかどうかを判断できます。言語ステータスバーを呼び出すには、C++ ファイルを開きます。ステータスバーにテキスト {} C++ が表示されます。{} 記号の上にカーソルを合わせると、言語ステータスバーフライアウトが開きます。フライアウトの最上位項目は、IntelliSense のステータスを示します。さまざまなステータスとその意味は次のとおりです。
- IntelliSense: 準備完了 = IntelliSense は C/C++ 拡張機能用に構成されており、コードの記述など、エディターを操作すると自動的にアクティブになります。
- IntelliSense: 更新中 = IntelliSense は、コード補完、構文の強調表示などを、コードに加えた変更に基づいて決定するためにアクティブに動作しています。
言語ステータスバーフライアウトの任意の項目の右側にあるピンアイコンを選択して、ステータスバーに永続的にピン留めできます。
次のステップ
- IntelliSense 構成の詳細については、「デフォルト設定のカスタマイズ」を参照してください。
- 設定の構成に問題がある場合は、GitHub ディスカッションでディスカッションを開始するか、修正が必要な問題が見つかった場合は、GitHub issues で問題を報告してください。
- c_cpp_properties スキーマをご覧ください。
- C++ 拡張機能の概要をご覧ください。