Help us understand the problem. What is going on with this article?

【翻訳】Visual Studio Code C/C++ Extension の設定ファイル c_cpp_properties.json のリファレンスガイド

意外と日本語のちゃんとした説明が無くて困ったので、c_cpp_properties.json Reference Guide を翻訳します。

{
    "env" : {
        "myDefaultIncludePath": [
            "${workspaceFolder}",
            "${workspaceFolder}/include"
        ],
        "myCompilerPath": "/usr/local/bin/gcc-7"
    },
    "configurations": [
        {
            "name": "Mac",
            "intelliSenseMode": "clang-x64",
            "includePath": [ "${myDefaultIncludePath}", "/another/path" ],
            "macFrameworkPath": [ "/System/Library/Frameworks" ],
            "defines": [ "FOO", "BAR=100" ],
            "forcedInclude": [ "${workspaceFolder}/include/config.h" ],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "compileCommands": "/path/to/compile_commands.json",
            "browse": {
                "path": [ "${workspaceFolder}" ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        }
    ],
    "version": 4
}

トップレベルプロパティ

  • env

    ユーザー定義変数の配列であり、標準環境変数を ${<var>} または ${env:<var>} という文法で置換することができます。文字列と、文字列の配列を入れることができます。

  • configurations

    IntelliSense エンジンに対して、プロジェクトと設定の情報を指定するオブジェクトの配列です。デフォルトでは、この拡張機能はあなたのOSを元にした設定を生成します。追加の設定を加えることができます。

  • version

    このフィールドは編集しないでください。これは c_cpp_properties.json ファイルの現在のバージョンを追跡するもので、拡張機能がどのプロパティや設定が存在するか、どうやって最新のバージョンにアップグレードするかを把握するためのものです。

Configuration プロパティ

  • name

    この設定のわかりやすい名前です。"Linux", "Mac", "Win32" は特別な名前で、追加の設定をしていない限り、拡張機能に各OSのデフォルト値を読み込むことを指示します。VS Code のステータスバーには、どの設定がアクティブであるかが表示されます。ステータスバーのラベルをクリックすることで、アクティブな設定を変更することができます。

  • intelliSenseMode

    "C_Cpp.intelliSenseEngine" が "Default" に設定されている場合の、IntelliSense エンジンの動作モードを指定します。"msvc-x64" は64ビットポインタサイズの Visual Studio に対応します。"clang-x64" は64ビットポインタサイズの Clang に対応します。"gcc-x64" は64ビットポインタサイズの GCC に対応します。Windows はデフォルトで "msvc-x64" を使用し、macOS は "clang-x64" 、Linux は "gcc-x64" を使用します。

  • includePath

    "C_Cpp.intelliSenseEngine" が "Default" に設定されている場合の、IntelliSense がソースからインクルードされているヘッダファイルを検索するパスのリストを指定します。これは基本的にあなたがコンパイラに -I スイッチで渡すパスのリストと同じです。パスの末尾が /** で終わる時、IntelliSense エンジンはそのディレクトリを再帰的に検索します。Visual Studio がインストールされた Windows の場合、または compilerPath 設定でコンパイラが指定されている場合、このリストにシステムインクルードパスを含める必要はありません。

  • macFrameworkPath

    "C_Cpp.intelliSenseEngine" が "Default" に設定されている場合、フレームワークヘッダを IntelliSense が検索するのに使うパスのリストを指定します。これは基本的にあなたがコンパイラに -F スイッチで渡すパスのリストと同じです。IntelliSense はこれらのパスを再帰的に検索しません。

  • defines

    "C_Cpp.intelliSenseEngine" が "Default" に設定されている場合、IntelliSense がコンパイル時に使うプリプロセッサシンボルのリストを指定します。これは基本的にあなたがコンパイラに -D スイッチで渡すシンボルのリストと同じです。Visual Studio がインストールされた Windows の場合、または compilerPath 設定でコンパイラが指定されている場合、このリストにデフォルトで定義されるシンボルを含める必要はありません。

  • forcedInclude (optional)

    ソースファイルが処理される前にインクルードするファイルのリストを指定します。ファイルはリストの順序でインクルードされます。

  • compilerPath (optional)

    あなたのプロジェクトをビルドするのに使うコンパイラの絶対パスを指定します。拡張機能は IntelliSense で使うシステムインクルードパスとデフォルトのシンボル定義を決定するためにコンパイラに問い合わせます。
    -nostdinc++-m32-fno-ms-extensions 等のインクルードや定義を変更するために引数を追加することができます。ただし、空白を含むパスはダブルクォーテーション " で囲む必要があります。
    システムインクルードパスと定義を自動的に問い合わせるのを無効にしたい時は、この値を空文字列 "" に設定してください。これは一般的に推奨されませんが、いくつかの場合において自動的に問い合わせることが望ましくないことがあります。

  • cStandard

    あなたのプロジェクトで IntelliSense が使う C 標準のリビジョンを指定します。

  • cppStandard

    あなたのプロジェクトで IntelliSense が使う C++ 標準のリビジョンを指定します。

  • compileCommands (optional)

    "C_Cpp.intelliSenseEngine" が "Default" に設定されている場合、このファイルの中で検出されたインクルードや定義は includePathdefines で設定された値の代わりに使われます。もし、このコンパイルコマンドデータベースが、あなたがエディタで開いているファイルに対応する翻訳単位のエントリーを含まない場合、警告メッセージが表示され、拡張機能は includePathdefines 設定を代わりに使います。

    このファイルフォーマットについての詳しい情報は Clang documentation をご覧ください。いくつかのビルドシステム(例えば CMake)はこのファイルを生成します

  • browse

    "C_Cpp.intelliSenseEngine""Tag Parser" ("fuzzy" IntelliSense とか "browse" エンジンとも呼ばれます)に設定されている場合に使うプロパティの集合を指定します。これらのプロパティは "Go To Definition/Declaration" 機能や、"Default" IntelliSense エンジンがソースファイル中の #include を解決できない時にに使われます。

Browse プロパティ

  • path

    Tag Parser がソースファイルからインクルードされたヘッダを検索するのに使うパスのリストを指定します。もし省略された場合は、includePathpath として使われます。パスの末尾が /* または \* でない限り、Tag Parser は自動的にこれらのパスのサブフォルダーを検索します。例えば、/usr/include の指定ならば、Tag Parser は include フォルダーとそのサブフォルダーを検索するのに対し、/usr/include/* ならば Tag Parser は /usr/include のいずれのサブフォルダーも検索しません。

  • limitSymbolsToIncludedHeaders

    true であれば、Tag Parser は ${workspaceFolder} の中のソースファイルから直接または間接的にインクルードされたファイルのみをパースします。false であれば、Tag Parser は path リストで指定されたパスの中から見つかった全てのファイルをパースします。

  • databaseFilename

    設定されている時、拡張機能が Tag Parser のシンボルデータベースを、ワークスペースのデフォルト格納場所以外に保存する場所を指定します。相対パスが指定された時、ワークスペースのフォルダーではなく、ワークスペースのデフォルト格納場所からの相対パスとなります。ワークスペースフォルダーからの相対パスを指定するには、${workspaceFolder} 変数を使うことができます(例えば、 ${workspaceFolder}/.vscode/browse.vc.db)。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした