CppProperties.json
riferimento
I progetti Apri cartella che non usano CMake possono archiviare le impostazioni di configurazione del progetto per IntelliSense in un CppProperties.json
file. I progetti CMake usano un CMakeSettings.json
file. Una configurazione è costituita da coppie nome/valore e definisce #include percorsi, opzioni del compilatore e altri parametri. Per altre informazioni su come aggiungere configurazioni in un progetto Apri cartella, vedere Open Folder projects for C++. Le sezioni seguenti riepilogano le varie impostazioni. Per una descrizione completa dello schema, passare a CppProperties_schema.json, il cui percorso completo viene specificato nella parte superiore dell'editor di codice quando CppProperties.json
è aperto.
Proprietà di configurazione
Una configurazione può avere una delle proprietà seguenti:
Nome | Descrizione |
---|---|
inheritEnvironments |
Specifica gli ambienti applicabili a questa configurazione. |
name |
Nome della configurazione che verrà visualizzato nell'elenco a discesa configurazione C++ |
includePath |
Elenco delimitato da virgole di cartelle che devono essere specificate nel percorso di inclusione (mappato alla /I maggior parte dei compilatori) |
defines |
Elenco di macro che devono essere definite (mappate alla maggior /D parte dei compilatori) |
compilerSwitches |
Una o più opzioni aggiuntive che possono influire sul comportamento di IntelliSense |
forcedInclude |
Intestazione da includere automaticamente in ogni unità di compilazione (mappa a /FI per MSVC o -include per clang) |
undefines |
Elenco di macro da non definire (mappato a /U per MSVC) |
intelliSenseMode |
Il motore IntelliSense da usare. È possibile specificare una delle varianti predefinite specifiche dell'architettura per MSVC, gcc o Clang. |
environments |
Set definiti dall'utente di variabili che si comportano come variabili di ambiente in un prompt dei comandi e sono accessibili con la ${env.VARIABLE} macro. |
Valori intelliSenseMode
L'editor di codice mostra le opzioni disponibili quando si inizia a digitare:
Questo elenco mostra i valori supportati:
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
Nota: i valori msvc-x86
e msvc-x64
sono supportati solo per motivi legacy. Usare invece le windows-msvc-*
varianti.
Ambienti predefiniti
Visual Studio fornisce gli ambienti predefiniti seguenti per Microsoft C++ che eseguono il mapping al prompt dei comandi per gli sviluppatori corrispondente. Quando si eredita uno di questi ambienti, è possibile fare riferimento a una delle variabili di ambiente usando la proprietà env
globale con questa sintassi di macro: ${env.VARIABLE}
.
Nome variabile | Descrizione |
---|---|
vsdev |
Ambiente Visual Studio predefinito |
msvc_x86 |
Compilazione per x86 usando strumenti x86 |
msvc_x64 |
Compilazione per AMD64 usando strumenti a 64 bit |
msvc_arm |
Compilazione per ARM usando strumenti x86 |
msvc_arm64 |
Compilazione per ARM64 usando strumenti x86 |
msvc_x86_x64 |
Compilazione per AMD64 usando strumenti x86 |
msvc_arm_x64 |
Compilazione per ARM usando strumenti a 64 bit |
msvc_arm64_x64 |
Compilazione per ARM64 usando strumenti a 64 bit |
Quando viene installato il carico di lavoro di Linux sono disponibili gli ambienti seguenti per la definizione di Linux e WSL come destinazione remota:
Nome variabile | Descrizione |
---|---|
linux_x86 |
Imposta come destinazione x86 Linux in modalità remota |
linux_x64 |
Imposta come destinazione x64 Linux in modalità remota |
linux_arm |
Imposta come destinazione ARM Linux in modalità remota |
Ambienti definiti dall'utente
Facoltativamente, è possibile usare la environments
proprietà per definire set di variabili in tutto il mondo o per CppProperties.json
ogni configurazione. Queste variabili si comportano come variabili di ambiente nel contesto di un progetto Apri cartella. È possibile accedervi con la ${env.VARIABLE}
sintassi da tasks.vs.json
e launch.vs.json
dopo che sono stati definiti qui. Tuttavia, non sono necessariamente impostati come variabili di ambiente effettive in qualsiasi prompt dei comandi usato internamente da Visual Studio.
Visual Studio 2019 versione 16.4 e successive: le variabili specifiche della configurazione definite in CppProperties.json
vengono prelevate automaticamente dalle destinazioni di debug e dalle attività senza la necessità di impostare inheritEnvironments
. Le destinazioni di debug vengono avviate automaticamente con l'ambiente specificato in CppProperties.json
.
Visual Studio 2019 versione 16.3 e precedenti: quando si utilizza un ambiente, è necessario specificarlo nella inheritsEnvironments
proprietà anche se l'ambiente è definito come parte della stessa configurazione. La environment
proprietà specifica il nome dell'ambiente. L'esempio seguente illustra una configurazione di esempio per l'abilitazione di IntelliSense per GCC in un'installazione di MSYS2. Si noti che la configurazione definisce ed eredita l'ambiente mingw_64
e come la includePath
proprietà può accedere alla INCLUDE
variabile.
"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"
}
]
}
]
Quando si definisce una "environments"
proprietà all'interno di una configurazione, viene eseguito l'override di tutte le variabili globali con gli stessi nomi.
Macro predefinite
In CppProperties.json
è possibile accedere alle macro predefinite seguenti:
Macro | Descrizione |
---|---|
${workspaceRoot} |
Percorso completo della cartella dell'area di lavoro |
${projectRoot} |
Percorso completo della cartella in cui CppProperties.json si trova |
${env.vsInstallDir} |
Percorso completo della cartella in cui è installata l'istanza in esecuzione di Visual Studio |
Esempio
Se il progetto include una cartella di inclusione e include *windows.h
anche * e altre intestazioni comuni di Windows SDK, è possibile aggiornare il CppProperties.json
file di configurazione con quanto segue:
{
"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"
]
}
]
}
Nota
%WindowsSdkDir%
e %VCToolsInstallDir%
non sono impostati come variabili di ambiente globali. Assicurarsi di iniziare devenv.exe
da un prompt dei comandi per gli sviluppatori che definisce queste variabili. Digitare "developer" nel menu Start di Windows per trovare un collegamento al prompt dei comandi per gli sviluppatori.
Risolvere gli errori di IntelliSense
Se non viene visualizzato IntelliSense previsto, è possibile risolvere i problemi passando a Strumenti>Opzioni>Editor>di testo C/C++>Avanzate e impostando Abilita registrazione su .true
Per iniziare, provare a impostare Livello di registrazione su 5 e Filtri di registrazione su 8.
L'output viene inviato tramite pipe alla finestra di output ed è visibile quando si sceglie Mostra output da: Log di Visual C++. L'output contiene, tra le altre cose, l'elenco dei percorsi di inclusione effettivi che IntelliSense sta tentando di usare. Se i percorsi non corrispondono a quelli in CppProperties.json
, provare a chiudere la cartella ed eliminare la .vs
sottocartella contenente i dati di esplorazione memorizzati nella cache.
Per risolvere gli errori di IntelliSense causati da percorsi di inclusione mancanti, aprire la scheda Elenco errori e quindi filtrare l'output in "Solo IntelliSense" e il codice di errore E1696 "cannot open source file ...".