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