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:
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ı inheritEnvironments
gerekmeden otomatik olarak alınır. Hata ayıklama hedefleri içinde belirttiğiniz 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 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.json
aş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.
Çı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.json
eş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.