web-dev-qa-db-ja.com

Visual StudioコードincludePath

Visual Studio CodeでC/C++を構築しようとしています。 C/C++および関連するすべての拡張機能をインストールしました。

#include <stdio.h>
int main() {
    printf("Test C now\n");
    return 0;
}

ただし、#include <stdio.h>の下に「設定へのインクルードパスの追加」という緑色の線があります。クリックすると、「c_cpp_properties.json」に移動します。

以下の構成でインクルードパスを追加する方法と場所

"configurations": [
    {
        "name": "Mac",
        "includePath": ["/usr/include"]
    }
]
48
stdio.h

以下の構成でインクルードパスを追加する方法と場所を教えてください。

リストは文字列配列であるため、インクルードパスを追加すると次のようになります。

"configurations": [
    {
        "name": "Mac",
        "includePath": ["/usr/local/include",
            "/path/to/additional/includes",
            "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include"
        ]
    }
]

ソース; cpptoolsブログ2016年3月31日

リンクされたソースには、Win32構成の形式を示すgifがありますが、他のソースにも同じことが当てはまります。

上記のサンプルには、Xcodeがインストールされている場合のSDK(OSX 10.11)パスが含まれています

インクルードパスが変更されたら、更新に時間がかかることがあります。

Cpptools拡張は こちらにあります にできます。

VSCodeでのC++言語サポートに関する詳細なドキュメント(Microsoftから)は、 こちらにあります です。


2018年に、C++拡張機能により、c_cpp_properties.jsonファイルの構成 compilerPath に別のオプションが追加されました。

compilerPath(オプション)プロジェクトのビルドに使用するコンパイラーへの絶対パス。拡張機能は、IntelliSenseに使用するシステムインクルードパスとデフォルト定義を決定するためにコンパイラーに照会します。

IntelliSenseはコンパイラを使用してシステムインクルードパスを特定するため、使用する場合、includePathは必要ありません。


保存のため(議論から)、以下はC++ファイルまたはCファイルのいずれかをコンパイルおよび実行するためのtasks.jsonファイルの内容の基本スニペットです。ファイル名にスペースを含めることができます(\"を使用してjsonで追加の引用符をエスケープする必要があります)。シェルは ランナーとして を使用するため、プログラムのコンパイル(clang...)および実行(&& ./a.out)が許可されます。また、tasks.jsonはローカルワークスペース(ディレクトリ.vscodeの下)に「存在する」と想定しています。サポートされている変数など、task.jsonの詳細は こちらにあります になります。

C++の場合;

{ 
    "version": "0.1.0", 
    "isShellCommand": true, 
    "taskName": "GenericBuild", 
    "showOutput": "always", 
    "command": "sh", 
    "suppressTaskName": false, 
    "args": ["-c", "clang++ -std=c++14 -Wall -Wextra -pedantic -pthread \"${file}\" && ./a.out"]
}

Cの場合;

{ 
    "version": "0.1.0", 
    "isShellCommand": true, 
    "taskName": "GenericBuild", 
    "showOutput": "always", 
    "command": "sh", 
    "suppressTaskName": false, 
    "args": ["-c", "clang -std=c11 -Wall -Wextra -pedantic -pthread \"${file}\" && ./a.out"] // command arguments... 
}
40
Niall

Macユーザーの場合、Xcodeではなくコマンドラインツールのみをインストールした場合は、/Library/Developer/CommandLineTools/ディレクトリを確認します。例:

"configurations": [{
    "name": "Mac",
    "includePath": [
        "/Library/Developer/CommandLineTools/usr/lib/clang/8.1.0/include/",
        "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1/tr1/",
        "/usr/include/c++/4.2.1",
        "/usr/local/include",
        "/usr/include"
    ]
}]

異なるバージョンのコマンドラインツールがインストールされている場合は、おそらくパスを調整する必要があります。

:コマンドパレット(-P)のc_cpp_properties.jsonコマンドを使用してC/Cpp: Edit Configurationsファイルを開いたり生成したりすることもできます。

11
ryenus

ユーザー設定で以下を追加します。

"C_Cpp.default.includePath":["path1","path2"]
1
regomodo

プロジェクトの標準ヘッダーを構成する最良の方法は、compilerPathプロパティをc_cpp_properties.jsonファイルの構成に設定することです。システムインクルードパスをincludePathプロパティに追加することは推奨されません。

c_cpp_properties.jsonを使用しない場合の別のオプションは、C_Cpp.default.compilerPath設定を設定することです。

1
Bob Brown

この回答は多分遅れましたが、たまたま問題を修正しました。これが私のc_cpp_properties.jsonファイルです。

{
"configurations": [
    {
        "name": "Linux",
        "includePath": [
            "${workspaceFolder}/**",                
            "/usr/include/c++/5.4.0/",
            "usr/local/include/",
            "usr/include/"
        ],
        "defines": [],
        "compilerPath": "/usr/bin/gcc",
        "cStandard": "c11",
        "cppStandard": "c++14",
        "intelliSenseMode": "clang-x64"
    }
],
"version": 4

}

0
100rabh