CppProperties.json referans

CMake kullanmayan Klasör projelerini aç, IntelliSense için proje yapılandırma ayarlarını bir CppProperties.json dosyada 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. Klasör Aç projesine yapılandırma ekleme hakkında daha fazla bilgi için bkz . C++ için Klasör Projelerini Açma. Aşağıdaki bölümlerde çeşitli ayarlar özetlemektedir. Şemanın tam açıklaması için, açık olduğunda CppProperties.json kod düzenleyicisinin en üstünde tam yolu verilen CppProperties_schema.json gidin.

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 Ekleme yolunda belirtilmesi gereken klasörlerin virgülle ayrılmış listesi (çoğu derleyici için /I eşler)
defines Tanımlanması gereken makroların listesi (çoğu derleyici için ile eşler /D )
compilerSwitches IntelliSense davranışını etkileyebilecek bir veya daha fazla ek anahtar
forcedInclude Her derleme birimine otomatik olarak eklenecek üst bilgi (MSVC veya -include clang için olarak eşlenmiştir/FI)
undefines Tanımlanmamış makroların listesi (MSVC için ile eşleniyor /U )
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: ve msvc-x64 değerleri msvc-x86 yalnızca eski nedenlerle desteklenir. 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, genel olarak veya yapılandırma başına değişken CppProperties.json kümeleri tanımlamak için özelliğini kullanabilirsinizenvironments. Bu değişkenler, Klasör Aç projesi bağlamında ortam değişkenleri gibi davranır. Burada ${env.VARIABLE} tanımlandıktan sonra ve launch.vs.json bu tasks.vs.json söz dizimiyle 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: içinde CppProperties.json tanımlanan yapılandırmaya özgü değişkenler, hata ayıklama hedefleri ve görevleri tarafından ayarlanması inheritEnvironmentsgerekmeden otomatik olarak alınır. Hata ayıklama hedefleri içinde belirttiğiniz CppProperties.jsonortamla 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 ortamı nasıl tanımlayıp devraldığı mingw_64 ve özelliğinin değişkene nasıl erişebileceğine includePath INCLUDE 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 ekleme klasörü varsa ve * ve Windows SDK'sından diğer ortak üst bilgileri içeriyorsa *windows.h, yapılandırma dosyanızı CppProperties.json aşağıdakilerle güncelleştirmek 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 başladığınızdan devenv.exe 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, Araçlar>Seçenekler>Metin Düzenleyicisi>C/C++>Gelişmiş'e gidip Günlüğü true Etkinleştir'i olarak ayarlayarak sorun giderebilirsiniz. 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 Çıktıyı Göster'i seçtiğinizde görünür: Visual C++ Günlüğü. Çıktı, diğer şeylerin dışında, IntelliSense'in kullanmaya çalıştığı yolları da 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 ekleme yollarından kaynaklanan IntelliSense hatalarını gidermek için Hata Listesi sekmesini açın ve çıktısını "Yalnızca IntelliSense" ve E1696 "...dosyasını açık kaynak" hata koduna filtreleyin.