Aracılığıyla paylaş


CppProperties.json referans

CMake kullanmayan Klasör projeleri, IntelliSense için proje yapılandırma ayarlarını bir CppProperties.json dosyasında depolayabilir. (CMake projeleri bir CMakeSettings.json dosya kullanır.) Yapılandırma ad/değer çiftlerinden oluşur ve #include yollarını, derleyici anahtarlarını ve diğer parametreleri tanımlar. Open Folder projesine yapılandırma ekleme hakkında daha fazla bilgi için Open Folder projeleri bölümüne bakın. Aşağıdaki bölümler, çeşitli ayarları özetlemektedir. Şemanın tam açıklaması için, CppProperties_schema.json'a gidin. Tam yol, CppProperties.json açıkken kod düzenleyicinin üst kısmında verilmiştir.

Yapılandırma özellikleri

Yapılandırma aşağıdaki özelliklerden herhangi birine sahip olabilir:

Veri Akışı Adı Açıklama
inheritEnvironments Bu yapılandırmaya hangi ortamların uygulanacağını belirtir.
name C++ yapılandırma açılan listesinde görünecek yapılandırma adı
includePath Dahil edilecek yolunda belirtilmesi gereken klasörlerin virgülle ayrılmış listesi (çoğu derleyici için /I ile eşleşir)
defines Tanımlanması gereken makroların listesi (çoğu derleyici için /D ile eşleştirilir)
compilerSwitches IntelliSense davranışını etkileyebilecek bir veya daha fazla ek anahtar
forcedInclude Her derleme birimine otomatik olarak eklenecek Header (MSVC için /FI veya clang için -include olarak eşlenmiştir)
undefines Tanımlanmamış makroların listesi (/U ile MSVC'de eşlenir)
intelliSenseMode Kullanılacak IntelliSense altyapısı. MSVC, gcc veya Clang için önceden tanımlanmış mimariye özgü değişkenlerden birini belirtebilirsiniz.
environments Komut isteminde ortam değişkenleri gibi davranan ve makroyla ${env.VARIABLE} erişilen kullanıcı tanımlı değişken kümeleri.

intelliSenseMode değerleri

Kod düzenleyicisi, yazmaya başladığınızda kullanılabilir seçenekleri gösterir:

Düzenleyicide IntelliSense açılır penceresinin ekran görüntüsü.

Bu listede desteklenen değerler gösterilir:

  • 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

Not: msvc-x86 ve msvc-x64 değerleri yalnızca eski sebeplerden dolayı desteklenmektedir. windows-msvc-* Bunun yerine varyantları kullanın.

Önceden Tanımlanmış Ortamlar

Visual Studio, Microsoft C++ için ilgili Geliştirici Komut İstemi ile eşlenen aşağıdaki önceden tanımlanmış ortamları sağlar. Bu ortamlardan birini devraldığınızda, şu makro söz dizimi ile genel özelliğini env kullanarak ortam değişkenlerinden herhangi birine başvurabilirsiniz: ${env.VARIABLE}.

Değişken Adı Açıklama
vsdev Varsayılan Visual Studio ortamı
msvc_x86 x86 araçlarını kullanarak x86 için derleme
msvc_x64 64 bit araçları kullanarak AMD64 için derleme
msvc_arm x86 araçlarını kullanarak ARM için derleme
msvc_arm64 x86 araçlarını kullanarak ARM64 için derleme
msvc_x86_x64 x86 araçlarını kullanarak AMD64 için derleme
msvc_arm_x64 64 bit araçları kullanarak ARM için derleme
msvc_arm64_x64 64 bit araçları kullanarak ARM64 için derleme

Linux iş yükü yüklendiğinde, Linux ve WSL'yi uzaktan hedeflemek için aşağıdaki ortamlar kullanılabilir:

Değişken Adı Açıklama
linux_x86 x86 Linux'ı uzaktan hedefleme
linux_x64 x64 Linux'ı uzaktan hedefleme
linux_arm ARM Linux'ı uzaktan hedefleme

Kullanıcı tanımlı ortamlar

İsteğe bağlı olarak, environments özelliğini genel olarak veya yapılandırma başına değişken kümeleri tanımlamak için kullanabilirsinizCppProperties.json. Bu değişkenler, Klasör Aç projesi bağlamında ortam değişkenleri gibi davranır. Burada tanımlandıktan sonra ${env.VARIABLE} söz dizimiyle tasks.vs.json ve launch.vs.json'dan bunlara erişebilirsiniz. Ancak Visual Studio'nun dahili olarak kullandığı herhangi bir komut isteminde gerçek ortam değişkenleri olarak ayarlanmamıştır.

Visual Studio 2019 sürüm 16.4 ve üzeri:CppProperties.json içinde tanımlanan yapılandırmaya özgü değişkenler, hata ayıklama hedefleri ve görevleri için herhangi bir inheritEnvironments ayarlamaya gerek kalmadan otomatik olarak kullanılır. Hata ayıklama hedefleri, içinde belirtilen CppProperties.json ortamla otomatik olarak başlatılır.

Visual Studio 2019 sürüm 16.3 ve öncesi: Bir ortam kullandığınızda, ortam aynı yapılandırmanın inheritsEnvironments parçası olarak tanımlansa bile özelliğinde bunu belirtmeniz gerekir; environment özellik ortamın adını belirtir. Aşağıdaki örnekte, MSYS2 yüklemesinde GCC için IntelliSense'i etkinleştirmeye yönelik örnek bir yapılandırma gösterilmektedir. Yapılandırmanın hem mingw_64 ortamını tanımladığı hem de devraldığı ve includePath özelliğinin INCLUDE değişkenine nasıl erişebileceğine dikkat edin.

"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"
        }
      ]
    }
  ]

Bir yapılandırma içinde bir "environments" özellik tanımladığınızda, aynı adlara sahip tüm genel değişkenleri geçersiz kılar.

Yerleşik makrolar

içinde CppProperties.jsonaşağıdaki yerleşik makrolara erişiminiz vardır:

Makro Açıklama
${workspaceRoot} Çalışma alanı klasörünün tam yolu
${projectRoot} Yerleştirildiği CppProperties.json klasörün tam yolu
${env.vsInstallDir} Visual Studio'nun çalışan örneğinin yüklü olduğu klasörün tam yolu

Örnek

Projenizde bir dahil etme klasörü varsa ve Windows SDK'sından *windows.h * ve diğer genel başlık dosyalarını içeriyorsa, yapılandırma dosyanızı CppProperties.json aşağıdakilerle güncellemek isteyebilirsiniz:

{
  "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"
      ]
    }
  ]
}

Not

%WindowsSdkDir% ve %VCToolsInstallDir% genel ortam değişkenleri olarak ayarlanmaz. Bu değişkenleri tanımlayan bir Geliştirici Komut İstemi'nden devenv.exe başladığınızdan emin olun. (Geliştirici Komut İstemi kısayolunu bulmak için Windows Başlat Menüsü'ne "geliştirici" yazın.)

IntelliSense hatalarını giderme

Beklediğiniz IntelliSense'i görmüyorsanız, sorun gidermek için Araçlar>Seçenekler>Metin Düzenleyici>C/C++>Gelişmiş seçeneklerine gidip Günlüğü Etkinleştir ayarını true olarak değiştirebilirsiniz. Başlangıç olarak Günlük Düzeyi'ni 5, Günlük Filtreleri'ni 8 olarak ayarlamayı deneyin.

Seçenekler iletişim kutusundaki Tanılama günlüğü ayarlarının ekran görüntüsü.

Çıkış, Çıkış Penceresine yöneltilir ve Şu Kaynaktan Çıktıyı Göster: Visual C++ Günlüğü'nü seçtiğinizde görünür. Çıktı, diğer şeylerin dışında, IntelliSense'in kullanmaya çalıştığı gerçek dahil etme yolları listesini de içerir. Yollar içindekilerle CppProperties.jsoneşleşmiyorsa, klasörü kapatmayı ve önbelleğe alınmış gözatma verilerini içeren alt klasörü silmeyi .vs deneyin.

Eksik dahil etme yollarından kaynaklanan IntelliSense hatalarını gidermek için Hata Listesi sekmesini açın ve çıktısını "Yalnızca IntelliSense" öğesine ve E1696 "kaynak dosyası açılamıyor" hata koduna göre filtreleyin.