Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 della configurazione C++ |
includePath |
Elenco di cartelle separate da virgole che devono essere specificate nel percorso di inclusione (mappato su /I per la maggior parte dei compilatori) |
defines |
Elenco di macro che devono essere definite (viene mappata a /D per la maggior parte dei compilatori) |
compilerSwitches |
Una o più opzioni aggiuntive che possono influire sul comportamento di IntelliSense |
forcedInclude |
Intestazione da includere automaticamente in unità di compilazione (si riferisce a /FI per MSVC e -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-x86windows-msvc-x64windows-msvc-armwindows-msvc-arm64android-clang-x86android-clang-x64android-clang-armandroid-clang-arm64ios-clang-x86ios-clang-x64ios-clang-armios-clang-arm64windows-clang-x86windows-clang-x64windows-clang-armwindows-clang-arm64linux-gcc-x86linux-gcc-x64linux-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 mappano al Prompt dei Comandi per 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 l'ambiente Linux, sono disponibili i seguenti strumenti per puntare a Linux e WSL come ambienti di destinazione remota:
| Nome variabile | Descrizione |
|---|---|
linux_x86 |
Prendi di mira x86 Linux da remoto |
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 proprietà environments per definire set di variabili CppProperties.json a livello globale o per ciascuna configurazione. Queste variabili si comportano come variabili di ambiente nel contesto di un progetto Apri cartella. È possibile accedervi utilizzando la sintassi ${env.VARIABLE} 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.hanche * 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 vedi l'IntelliSense che ti aspetti, puoi risolvere il problema andando su Strumenti>Opzioni>Editor di Testo>C/C++>Avanzate e impostando Abilita Logging 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: Registro 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 "impossibile aprire il file di origine ...".