CppProperties.json
referência
Os projetos de Pasta Aberta que não usam o CMake podem armazenar as definições de configuração do projeto para o IntelliSense em um CppProperties.json
arquivo. (Os projetos do CMake usam um CMakeSettings.json
arquivo.) Uma configuração consiste em pares de nome/valor e define caminhos #include, opções do compilador e outros parâmetros. Para obter mais informações sobre como adicionar configurações em um projeto de Pasta Aberta, consulte projetos de Pasta Aberta para C++. As seções a seguir resumem as várias configurações. Para obter uma descrição completa do esquema, navegue até CppProperties_schema.json, cujo caminho completo é fornecido na parte superior do editor de código quando CppProperties.json
está aberto.
Propriedades de configuração
Uma configuração pode ter uma das seguintes propriedades:
Nome | Descrição |
---|---|
inheritEnvironments |
Especifica quais ambientes se aplicam a essa configuração. |
name |
O nome de configuração que será exibido na lista suspensa de configuração do C++ |
includePath |
Uma lista separada por vírgulas de pastas que devem ser especificadas no caminho de inclusão (mapeia para /I a maioria dos compiladores) |
defines |
A lista de macros que devem ser definidas (mapeia para a /D maioria dos compiladores) |
compilerSwitches |
Uma ou mais opções adicionais que podem influenciar o comportamento do IntelliSense |
forcedInclude |
Cabeçalho a ser incluído automaticamente em cada unidade de compilação (mapeia para /FI para MSVC ou -include para clang) |
undefines |
A lista de macros a serem indefinidas (mapeia para /U MSVC) |
intelliSenseMode |
O mecanismo IntelliSense a ser usado. É possível especificar uma das variantes específicas de arquitetura predefinidas para MSVC, gcc ou Clang. |
environments |
Conjuntos de variáveis definidos pelo usuário que se comportam como variáveis de ambiente em um prompt de comando e são acessados com a ${env.VARIABLE} macro. |
Valores intelliSenseMode
O editor de código mostra as opções disponíveis quando você começa a digitar:
Esta lista mostra os valores suportados:
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
Observação: os valores msvc-x86
e msvc-x64
são compatíveis apenas por motivos de herança. Em vez disso, use as variantes windows-msvc-*
.
Ambientes predefinidos
O Microsoft Visual Studio fornece os seguintes ambientes predefinidos para o Microsoft C++ que são mapeados para o Prompt de Comando do Desenvolvedor correspondente. Ao herdar um desses ambientes, você pode se referir a qualquer uma das variáveis de ambiente usando a propriedade env
global com esta sintaxe de macro: ${env.VARIABLE}
.
Nome da variável | Descrição |
---|---|
vsdev |
O ambiente padrão do Visual Studio |
msvc_x86 |
Compilar para x86 usando ferramentas x86 |
msvc_x64 |
Compilar para AMD64 usando ferramentas de 64 bits |
msvc_arm |
Compilar para ARM usando ferramentas x86 |
msvc_arm64 |
Compilar para ARM64 usando ferramentas x86 |
msvc_x86_x64 |
Compilar para AMD64 usando ferramentas x86 |
msvc_arm_x64 |
Compilar para ARM usando ferramentas de 64 bits |
msvc_arm64_x64 |
Compilar para ARM64 usando ferramentas de 64 bits |
Quando a carga de trabalho do Linux é instalada, os seguintes ambientes ficam disponíveis para o direcionamento remoto do Linux e do WSL:
Nome da variável | Descrição |
---|---|
linux_x86 |
Direcionar ao Linux x86 remotamente |
linux_x64 |
Direcionar ao Linux x64 remotamente |
linux_arm |
Direcionar ao ARM Linux remotamente |
Ambientes definidos pelo usuário
Opcionalmente, você pode usar a environments
propriedade para definir conjuntos de variáveis globalmente CppProperties.json
ou por configuração. Essas variáveis se comportam como variáveis de ambiente no contexto de um projeto de Pasta Aberta. Você pode acessá-los com a ${env.VARIABLE}
sintaxe de tasks.vs.json
e launch.vs.json
depois que eles são definidos aqui. No entanto, eles não são necessariamente definidos como variáveis de ambiente reais em qualquer prompt de comando que o Visual Studio usa internamente.
Visual Studio 2019 versão 16.4 e posterior: as variáveis específicas da configuração definidas em CppProperties.json
são selecionadas automaticamente por destinos e tarefas de depuração sem a necessidade de definir inheritEnvironments
. Os destinos de depuração são iniciados automaticamente com o ambiente especificado no CppProperties.json
.
Microsoft Visual Studio 2019 versão 16.3 e anterior: ao consumir um ambiente, será necessário especificá-lo na propriedade inheritsEnvironments
mesmo que o ambiente seja definido como parte da mesma configuração; a propriedade environment
especifica o nome do ambiente. O exemplo a seguir mostra uma configuração de amostra para habilitar o IntelliSense para GCC em uma instalação do MSYS2. Observe como a configuração define e herda o ambiente mingw_64
e como a propriedade includePath
pode acessar a variável INCLUDE
.
"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 você define uma "environments"
propriedade dentro de uma configuração, ela substitui todas as variáveis globais que têm os mesmos nomes.
Macros internas
Você tem acesso às seguintes macros internas dentro de CppProperties.json
:
Macro | Descrição |
---|---|
${workspaceRoot} |
O caminho completo para a pasta de workspace |
${projectRoot} |
O caminho completo para a pasta onde CppProperties.json é colocado |
${env.vsInstallDir} |
O caminho completo para a pasta na qual a instância em execução do Microsoft Visual Studio está instalada |
Exemplo
Se o projeto tiver uma pasta de inclusão e também incluir *windows.h
* e outros cabeçalhos comuns do SDK do Windows, talvez você queira atualizar seu CppProperties.json
arquivo de configuração com as seguintes inclusões:
{
"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"
]
}
]
}
Observação
%WindowsSdkDir%
e %VCToolsInstallDir%
não são definidos como variáveis de ambiente global. Certifique-se de iniciar devenv.exe
a partir de um Prompt de Comando do Desenvolvedor que defina essas variáveis. (Digite "desenvolvedor" no menu Iniciar do Windows para encontrar um atalho do prompt de comando do desenvolvedor.)
Solucionar problemas de erros do IntelliSense
Se você não estiver vendo o IntelliSense esperado, poderá solucionar problemas acessando Ferramentas>Opções>Editor>de Texto C/C++>Advanced e definindo Habilitar Log para .true
Para começar, tente definir Nível de registros em log como 5 e Filtros de registros em log como 8.
A saída é direcionada para a Janela de Saída e fica visível quando você escolhe Mostrar Saída de: Log do Microsoft Visual C++. A saída contém, entre outras coisas, a lista de caminhos de inclusão reais que o IntelliSense está tentando usar. Se os caminhos não corresponderem aos do , tente fechar a pasta e excluir a subpasta que contém os .vs
dados de navegação armazenados em CppProperties.json
cache.
Para solucionar erros do IntelliSense causados por caminhos de inclusão ausentes, abra a guia Lista de Erros e filtre sua saída para "Somente IntelliSense" e o código de erro E1696 "não é possível abrir o arquivo de código-fonte ...".