Partilhar via


Recursos internos do MSBuild para projetos C++

Quando você define as propriedades do projeto no IDE e, em seguida, salva o projeto, o Visual Studio grava as configurações do projeto no arquivo de projeto. O arquivo de projeto contém configurações exclusivas do projeto. No entanto, não contém todas as configurações necessárias para construir o projeto. O arquivo de projeto contém elementos Import que incluem uma rede de arquivos de suporte adicionais. Os arquivos de suporte contêm as propriedades, os destinos e as configurações restantes necessários para construir o projeto.

A maioria dos destinos e das propriedades nos arquivos de suporte existe somente para implementar o sistema de build. Este artigo aborda os destinos e as propriedades úteis que podem ser especificados na linha de comando do MSBuild. Para descobrir mais destinos e propriedades, explore os arquivos nos diretórios de arquivos de suporte.

Diretórios de arquivos de suporte

Por padrão, os arquivos de suporte principais do Visual Studio estão localizados nos diretórios a seguir. Essas informações são específicas da versão.

Visual Studio 2022 e 2019

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\

    Contém os arquivos de destino primários (.targets) e arquivos de propriedades (.props) que são usados pelos destinos. Por padrão, a macro $(VCTargetsPath) faz referência a esse diretório. O espaço reservado <version> refere-se à versão do Visual Studio: v170 para Visual Studio 2022, v160 para Visual Studio 2019 ou v150 para Visual Studio 2017.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\

    Contém os arquivos de destino e de propriedade específicos da plataforma que substituem os destinos e as propriedades no diretório pai. Esse diretório também contém uma DLL que define as tarefas que são usadas pelos destinos nesse diretório. O espaço reservado <platform> representa o subdiretório do ARM, ARM64, Win32 ou x64.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Contém os diretórios que permitem ao build gerar os aplicativos C++ usando o especificado <toolset>. O espaço reservado <platform> representa o subdiretório do ARM, ARM64, Win32 ou x64. O espaço reservado <toolset> representa o subdiretório do conjunto de ferramentas.

Visual Studio 2017

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\

    Contém os arquivos de destino primários (.targets) e arquivos de propriedades (.props) que são usados pelos destinos. Por padrão, a macro $(VCTargetsPath) faz referência a esse diretório.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\

    Contém os arquivos de destino e de propriedade específicos da plataforma que substituem os destinos e as propriedades no diretório pai. Esse diretório também contém uma DLL que define as tarefas que são usadas pelos destinos nesse diretório. O espaço reservado <platform> representa o subdiretório do ARM, ARM64, Win32 ou x64.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\PlatformToolsets\<toolset>\

    Contém os diretórios que permitem ao build gerar os aplicativos C++ usando o especificado <toolset>. O espaço reservado <platform> representa o subdiretório do ARM, Win32 ou x64. O espaço reservado <toolset> representa o subdiretório do conjunto de ferramentas.

Visual Studio 2015 e anteriores

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\

    Contém os arquivos de destino primários (.targets) e arquivos de propriedades (.props) que são usados pelos destinos. Por padrão, a macro $(VCTargetsPath) referencia esse diretório.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\

    Contém os arquivos de destino e de propriedade específicos da plataforma que substituem os destinos e as propriedades no diretório pai. Esse diretório também contém uma DLL que define as tarefas que são usadas pelos destinos nesse diretório. O espaço reservado <platform> representa o subdiretório do ARM, Win32 ou x64.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Contém os diretórios que permitem ao build gerar os aplicativos C++ usando o especificado <toolset>. O espaço reservado <version> é V110 para Visual Studio 2012, V120 para Visual Studio 2013 e V140 para Visual Studio 2015. O espaço reservado <platform> representa o subdiretório do ARM, Win32 ou x64. O espaço reservado <toolset> representa o subdiretório do conjunto de ferramentas. Por exemplo, é v140 para compilar aplicativos do Windows usando o conjunto de ferramentas do Visual Studio 2015. Ou v120_xp para compilar para Windows XP usando o conjunto de ferramentas do Visual Studio 2013.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\Platforms\<platform>\PlatformToolsets\<toolset>\

    Os caminhos que permitem ao build gerar os aplicativos Visual Studio 2008 ou Visual Studio 2010 não incluem a <version>. Nessas versões, o espaço reservado <platform> representa o subdiretório do Itanium, Win32 ou x64. O espaço reservado <toolset> representa o subdiretório do conjunto de ferramentas v90 ou v100.

Arquivos de suporte

Os diretórios dos arquivos de suporte contêm arquivos com estas extensões:

Extensão Descrição
.targets Contém elementos XML Target que especificam as tarefas que são executadas pelo destino. Também pode conter elementos PropertyGroup, ItemGroup, ItemDefinitionGroup e Item definidos pelo usuário que são usados para atribuir arquivos e opções de linha de comando a parâmetros de tarefa.

Para obter mais informações, consulte Target Elemento (MSBuild).
.props Contém elementos XML Property Group e Property definidos pelo usuário que especificam as configurações de arquivo e parâmetro usadas durante um build.

Também pode conter elementos XML ItemDefinitionGroup e Item definidos pelo usuário que especificam configurações adicionais. Os itens definidos em um grupo de definição de item são semelhantes às propriedades, mas não podem ser acessados a partir da linha de comando. Os arquivos de projeto do Visual Studio frequentemente usam itens em vez de propriedades para representar configurações.

Para obter mais informações, consulte ItemGroup Elemento (MSBuild), ItemDefinitionGroup Elemento (MSBuild) e Item Elemento (MSBuild).
.xml Contém elementos XML que declaram e inicializam os elementos da interface do usuário do IDE. Por exemplo, folhas de propriedades, páginas de propriedades, controles de caixa de texto e controles de caixa de listagem.

Os arquivos .xml dão suporte direto ao IDE, não ao MSBuild. No entanto, os valores das propriedades do IDE são atribuídos para compilar propriedades e itens.

A maioria dos arquivos .xml está localizada em um subdiretório específico da localidade. Por exemplo, os arquivos da região Inglês - EUA estão em $(VCTargetsPath)\1033\.

Propriedades e destinos de usuário

Para usar o MSBuild com eficiência, é útil saber quais propriedades e destinos são úteis e relevantes. A maioria das propriedades e destinos ajudam a implementar o sistema de compilação do Visual Studio e não são relevantes ao usuário. Esta seção descreve as propriedades e os destinos orientados ao usuário que são importantes conhecer.

Propriedade PlatformToolset

A propriedade PlatformToolset determina qual Conjunto de ferramentas do MSVC é usado no build. Por padrão, o conjunto de ferramentas atual é usado. Quando essa propriedade é configurada, o valor é concatenado com cadeia de caracteres literais para formar o caminho. É o diretório que contém os arquivos de destino e de propriedades necessários para compilar um projeto para uma plataforma específica. O Conjunto de ferramentas da plataforma precisa estar instalado para o build usando essa versão do Conjunto de ferramentas da plataforma.

Por exemplo, defina a propriedade PlatformToolset como v140 para usar as ferramentas e as bibliotecas do Visual Studio 2015 para compilar seu aplicativo:

msbuild myProject.vcxproj /p:PlatformToolset=v140

Propriedade PreferredToolArchitecture

A propriedade PreferredToolArchitecture determina se as ferramentas e o compilador de 32 ou 64 bits são usados no build. Essa propriedade não afeta a arquitetura ou configuração da plataforma de saída. Por padrão, o MSBuild usará a versão x86 do compilador e das ferramentas se essa propriedade não estiver definida.

Por exemplo, defina a propriedade PreferredToolArchitecture como x64 para usar as ferramentas e o compilador de 64 bits para compilar seu aplicativo:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

Propriedade UseEnv

Por padrão, as configurações específicas da plataforma para o projeto atual substituem as variáveis de ambiente PATH, INCLUDE, LIB, LIBPATH, CONFIGURATION e PLATFORM. Defina a propriedade UseEnv como true para garantir que as variáveis de ambiente não sejam substituídas.

msbuild myProject.vcxproj /p:UseEnv=true

Destinos

Há centenas de destinos nos arquivos de suporte do Visual Studio. No entanto, a maioria são destinos orientados ao sistema que o usuário pode ignorar. A maioria dos destinos do sistema são prefixados por um sublinhado (_) ou possui um nome que inicia com PrepareFor, Compute, Before, After, Pre ou Post.

A tabela a seguir lista vários destinos úteis orientados ao usuário.

Destino Descrição
BscMake Executa a ferramenta do Utilitário de Manutenção de Informações de Procura da Microsoft, bscmake.exe.
Build Compila o projeto.

Esse destino é o padrão para um projeto.
ClCompile Executa a ferramenta do compilador do MSVC, cl.exe.
Clean Exclui arquivos de build temporários e intermediários.
Lib Executa a ferramenta do Gerenciador de Biblioteca de 32 Bits da Microsoft, lib.exe.
Link Executa a ferramenta do vinculador do MSVC, link.exe.
ManifestResourceCompile Extrai uma lista de recursos de um manifesto e, em seguida, executa a ferramenta do Compilador de Recurso do Microsoft Windows, rc.exe.
Midl Executa a ferramenta do compilador de MIDL (linguagem IDL da Microsoft), midl.exe.
Rebuild Limpa e, em seguida, compila o projeto.
ResourceCompile Executa a ferramenta do Compilador de Recurso do Microsoft Windows, rc.exe.
XdcMake Executa a ferramenta de Documentação XML, xdcmake.exe
Xsd Executa a ferramenta de Definição de Esquema XML, xsd.exe. Consulte a observação.

Observação

No Visual Studio 2017 e posterior, o suporte ao projeto C++ para arquivos .xsd foi preterido. Ainda é possível usar Microsoft.VisualC.CppCodeProvider adicionando CppCodeProvider.dll manualmente ao GAC.

Confira também

Referência de tarefas do MSBuild
BscMake tarefa
CL tarefa
CPPClean tarefa
LIB tarefa
Link tarefa
MIDL tarefa
MT tarefa
RC tarefa
SetEnv tarefa
VCMessage tarefa
XDCMake tarefa