Bagikan melalui


CppProperties.json referensi

Buka proyek Folder yang tidak menggunakan CMake dapat menyimpan pengaturan konfigurasi proyek untuk IntelliSense dalam CppProperties.json file. (Proyek CMake menggunakan CMakeSettings.json file.) Konfigurasi terdiri dari pasangan nama/nilai dan menentukan jalur #include, sakelar kompilator, dan parameter lainnya. Untuk informasi selengkapnya tentang cara menambahkan konfigurasi dalam proyek Buka Folder, lihat Membuka proyek Folder untuk C++. Bagian berikut ini meringkas berbagai pengaturan. Untuk deskripsi lengkap skema, navigasikan ke CppProperties_schema.json, yang jalur lengkapnya diberikan di bagian atas editor kode saat CppProperties.json terbuka.

Properti konfigurasi

Konfigurasi mungkin memiliki salah satu properti berikut:

Nama Deskripsi
inheritEnvironments Menentukan lingkungan mana yang berlaku untuk konfigurasi ini.
name Nama konfigurasi yang akan muncul di menu dropdown konfigurasi C++
includePath Daftar folder yang dipisahkan koma yang harus ditentukan dalam jalur sertakan (peta ke /I untuk sebagian besar pengkompilasi)
defines Daftar makro yang harus ditentukan (peta ke /D untuk sebagian besar pengkompilasi)
compilerSwitches Satu atau beberapa sakelar tambahan yang dapat memengaruhi perilaku IntelliSense
forcedInclude Header yang akan secara otomatis disertakan dalam setiap unit kompilasi (peta ke /FI untuk MSVC atau -include untuk clang)
undefines Daftar makro yang tidak ditentukan (peta ke /U untuk MSVC)
intelliSenseMode Mesin IntelliSense yang akan digunakan. Anda dapat menentukan salah satu varian khusus arsitektur yang telah ditentukan sebelumnya untuk MSVC, gcc, atau Clang.
environments Set variabel yang ditentukan pengguna yang berperilaku seperti variabel lingkungan dalam prompt perintah dan diakses dengan ${env.VARIABLE} makro.

nilai intelliSenseMode

Editor kode menunjukkan opsi yang tersedia saat Anda mulai mengetik:

Cuplikan layar pop-up IntelliSense di editor.

Daftar ini memperlihatkan nilai yang didukung:

  • windows-msvc-x86
  • windows-msvc-x64
  • windows-msvc-arm
  • windows-msvc-arm64
  • android-clang-x86
  • android-clang-x64
  • android-clang-arm
  • android-clang-arm64
  • ios-clang-x86
  • ios-clang-x64
  • ios-clang-arm
  • ios-clang-arm64
  • windows-clang-x86
  • windows-clang-x64
  • windows-clang-arm
  • windows-clang-arm64
  • linux-gcc-x86
  • linux-gcc-x64
  • linux-gcc-arm

Catatan: Nilai msvc-x86 dan msvc-x64 hanya didukung karena alasan warisan. windows-msvc-* Gunakan varian sebagai gantinya.

Lingkungan yang telah ditentukan sebelumnya

Visual Studio menyediakan lingkungan yang telah ditentukan sebelumnya berikut untuk Microsoft C++ yang memetakan ke Perintah Pengembang yang sesuai. Ketika Anda mewarisi salah satu lingkungan ini, Anda dapat merujuk ke salah satu variabel lingkungan dengan menggunakan properti env global dengan sintaks makro ini: ${env.VARIABLE}.

Nama Variabel Deskripsi
vsdev Lingkungan Visual Studio default
msvc_x86 Kompilasi untuk x86 menggunakan alat x86
msvc_x64 Kompilasi untuk AMD64 menggunakan alat 64-bit
msvc_arm Kompilasi untuk ARM menggunakan alat x86
msvc_arm64 Kompilasi untuk ARM64 menggunakan alat x86
msvc_x86_x64 Kompilasi untuk AMD64 menggunakan alat x86
msvc_arm_x64 Kompilasi untuk ARM menggunakan alat 64-bit
msvc_arm64_x64 Kompilasi untuk ARM64 menggunakan alat 64-bit

Ketika beban kerja Linux diinstal, lingkungan berikut tersedia untuk menargetkan Linux dan WSL dari jarak jauh:

Nama Variabel Deskripsi
linux_x86 Target x86 Linux dari jarak jauh
linux_x64 Target x64 Linux dari jarak jauh
linux_arm Target ARM Linux dari jarak jauh

Lingkungan yang ditentukan pengguna

Anda dapat secara opsional menggunakan environments properti untuk menentukan set variabel baik secara CppProperties.json global atau per konfigurasi. Variabel ini berulah seperti variabel lingkungan dalam konteks proyek Open Folder. Anda dapat mengaksesnya dengan ${env.VARIABLE} sintaks dari tasks.vs.json dan launch.vs.json setelah ditentukan di sini. Namun, variabel tersebut tidak selalu ditetapkan sebagai variabel lingkungan aktual dalam perintah apa pun yang digunakan Visual Studio secara internal.

Visual Studio 2019 versi 16.4 dan yang lebih baru: Variabel khusus konfigurasi yang ditentukan secara CppProperties.json otomatis diambil oleh target debug dan tugas tanpa perlu mengatur inheritEnvironments. Target debug diluncurkan secara otomatis dengan lingkungan yang Anda tentukan di CppProperties.json.

Visual Studio 2019 versi 16.3 dan yang lebih lama: Saat Anda menggunakan lingkungan, maka Anda harus menentukannya di inheritsEnvironments properti bahkan jika lingkungan didefinisikan sebagai bagian dari konfigurasi yang sama; environment properti menentukan nama lingkungan. Contoh berikut menunjukkan konfigurasi sampel untuk mengaktifkan IntelliSense untuk GCC dalam penginstalan MSYS2. Perhatikan bagaimana konfigurasi menentukan dan mewarisi mingw_64 lingkungan, dan bagaimana includePath properti dapat mengakses INCLUDE variabel.

"configurations": [
    {

      "inheritEnvironments": [
        "mingw_64"
      ],
      "name": "Mingw64",
      "includePath": [
        "${env.INCLUDE}",
        "${workspaceRoot}\\**",
      ],
      "intelliSenseMode": "linux-gcc-x64",
      "environments": [
        {
          "MINGW64_ROOT": "C:\\msys64\\mingw64",
          "BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
          "FLAVOR": "x86_64-w64-mingw32",
          "TOOLSET_VERSION": "9.1.0",
          "PATH": "${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
          "INCLUDE": "${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR};",
          "environment": "mingw_64"
        }
      ]
    }
  ]

Saat Anda menentukan "environments" properti di dalam konfigurasi, properti akan mengambil alih variabel global apa pun yang memiliki nama yang sama.

Makro bawaan

Anda memiliki akses ke makro bawaan berikut di dalam :CppProperties.json

Makro Deskripsi
${workspaceRoot} Jalur lengkap ke folder ruang kerja
${projectRoot} Jalur lengkap ke folder tempat CppProperties.json ditempatkan
${env.vsInstallDir} Jalur lengkap ke folder tempat instans Visual Studio yang sedang berjalan diinstal

Contoh

Jika proyek Anda memiliki folder sertakan dan juga menyertakan *windows.h* dan header umum lainnya dari Windows SDK, Anda mungkin ingin memperbarui file konfigurasi Anda CppProperties.json dengan yang berikut ini meliputi:

{
  "configurations": [
    {
      "name": "Windows",
      "includePath": [
        // local include folder
        "${workspaceRoot}\\include",
        // Windows SDK and CRT headers
        "${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\ucrt",
        "${env.NETFXSDKDir}\\include\\um",
        "${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\um",
        "${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\shared",
        "${env.VCToolsInstallDir}\\include"
      ]
    }
  ]
}

Catatan

%WindowsSdkDir% dan %VCToolsInstallDir% tidak ditetapkan sebagai variabel lingkungan global. Pastikan Anda memulai devenv.exe dari Prompt Perintah Pengembang yang menentukan variabel ini. (Ketik "pengembang" di Menu Mulai Windows untuk menemukan pintasan Perintah Pengembang.)

Memecahkan masalah kesalahan IntelliSense

Jika Anda tidak melihat IntelliSense yang Anda harapkan, Anda dapat memecahkan masalah dengan membuka Opsi>Editor>Teks C/C++>Tingkat Lanjut dan mengatur > ke . Untuk memulai, coba atur Tingkat Pengelogan ke 5, dan Filter Pengelogan ke 8.

Cuplikan layar pengaturan pembuatan log Diagnostik dalam dialog Opsi.

Output disalurkan ke Jendela Output dan terlihat saat Anda memilih Tampilkan Output Dari: Visual C++ Log. Output berisi, antara lain, daftar aktual termasuk jalur yang coba digunakan IntelliSense. Jika jalur tidak cocok dengan yang ada di CppProperties.json, coba tutup folder dan hapus .vs subfolder yang berisi data penjelajahan yang di-cache.

Untuk memecahkan masalah kesalahan IntelliSense yang disebabkan oleh tidak adanya jalur sertakan, buka tab Daftar Kesalahan, lalu filter outputnya ke "Hanya IntelliSense" dan kode kesalahan E1696 "tidak dapat sumber terbuka file ...".