Compartilhar via


Visão geral de MSBuild (Visual C++)

O MSBuild é o sistema de compilação padrão para projetos do Visual C++. Quando você cria um projeto no ambiente de desenvolvimento integrado Visual Studio (IDE), use a ferramenta de msbuild.exe, um arquivo de projeto baseado em XML, e arquivos opcionais de configurações. Embora você possa usar o msbuild.exe e um arquivo de projeto na linha de comando, a IDE fornece uma interface de usuário para que você possa configurar mais facilmente as configurações e compilar um projeto. Esta visão geral descreve como o Visual C++ usa o sistema MSBuild.

Pré-requisitos

Leia os documentos a seguir sobre o MSBuild.

MSBuild na linha de comando

A instrução a seguir do documento Referência de linha de comando MSBuild ilustra que a ferramenta msbuild.exe obtém um argumento explícito ou implícito de project file (um arquivo .vcxproj para projetos do Visual C++) e zero ou mais options de linha de comando.

msbuild.exe [project file] [options]

Use /target (ou /t) e opções de linha de comando /property (ou /p) para substituir as propriedades e os destinos que são especificadas no arquivo de projeto.

Uma função essencial do arquivo de projeto é especificar um destino, que é uma operação específica aplicada ao seu projeto, e as entradas e saídas que são necessárias para executar a operação. Um arquivo de projeto pode especificar um ou vários destinos, que podem incluir um destino padrão.

Cada destino consiste em uma sequência de uma ou mais tarefas. Cada tarefa é representada por uma classe .NET Framework que contém um comando executável. Por exemplo, Tarefa de CL contém o comando cl.exe.

Um parâmetro de tarefa é uma propriedade de tarefa de classe e representa normalmente uma opção de linha de comando do comando executável. Por exemplo, o parâmetro FavorSizeOrSpeed da tarefa CL corresponde às opções de compilador /Os e de /Ot.

Os parâmetros adicionais de tarefa oferecem suporte à infraestrutura do MSBuild. Por exemplo, o parâmetro de tarefa Sources especifica um conjunto de tarefas que podem ser consumidas por outras tarefas. Para obter mais informações sobre tarefas do MSBuild, consulte Referência das tarefas do MSBuild.

A maioria das tarefas exige entradas e saídas, como nomes de arquivo, caminhos e parâmetros de cadeia de caracteres, numéricos ou Boolianos. Por exemplo, uma entrada comum é o nome de um arquivo de origem .cpp para compilação. Um parâmetro de entrada importante é uma cadeia de caracteres que especifica a configuração e a plataforma de compilação, por exemplo, "Debug|Win32". Entradas e saídas são especificadas por um ou mais elementos XML definidos pelo usuário Item contidos em um elemento ItemGroup .

Um arquivo de projeto também pode especificar as propriedades definidas pelo usuário e os itens do grupo de definição de itens. As propriedades e os itens formam pares nome/valor que podem ser usados como variáveis na compilação. O componente name de um par define uma macro, e o componente value declara valor da macro. Uma macro de propriedade é acessada usando a notação $ (name), e uma macro de item é acessada usando a notação % (name).

Outros elementos XML em um arquivo de projeto podem testar macros e, em seguida, definir condicionalmente o valor de qualquer macro ou controlar a execução da compilação. Os nomes de macro e as cadeias de caracteres literais podem ser concatenados para gerar construções como um caminho e um nome de arquivo. Na linha de comando, a opção /property define ou substitui uma propriedade de projeto. Os itens não podem ser referenciados na linha de comando.

O sistema MSBuild pode executar condicional um destino antes ou depois de outro destino. Além disso, o sistema pode criar um destino com base em se os arquivos que o destino consome são mais recentes que os arquivos ele emite.

MSBuild no IDE

Ao definir as propriedades de projeto no IDE e então salvar o projeto, o Visual C++ grava as configurações do projeto para o arquivo de projeto. O arquivo de projeto contém configurações que são exclusivos do seu projeto, mas não contém todas as configurações necessárias para compilar seu projeto. O arquivo de projeto contém os elementos Import que incluem uma rede de arquivos de suporte adicionais. Os arquivos de suporte contêm as propriedades restantes, os destinos e as configurações necessárias para compilar o projeto.

A maioria dos destinos e propriedades nos arquivos de suporte existe somente para implementar o sistema de compilação. A seção a seguir aborda alguns destinos e propriedades úteis que você pode especificar na linha de comando do MSBuild. Para descobrir mais destinos e propriedades, explore os arquivos em diretórios de arquivo de suporte.

Suporte a diretórios de arquivos

Por padrão, arquivos primários de suporte do Visual C++ estão localizados nos diretórios.

Diretório

Descrição

drive:\Arquivos de Programas\MSBuild\Microsoft.Cpp\v4.0\version\

Contém os arquivos de destino principais (.targets) e arquivos de propriedade (.props) usados pelos destinos. Por padrão, a macro $(VCTargetsPath) referencia este diretório.

drive:\Arquivos de Programas\MSBuild\Microsoft.Cpp\v4.0\version\Platforms\platform\

Contém arquivos de destino e de propriedade específicos de plataforma que substituem destinos e propriedades em seu diretório pai. Este diretório também contém um arquivo .dll que define as tarefas que são usadas pelos destinos neste diretório.

O espaço reservado platform representa o subdiretório ARM, Win32 ou x64.

drive:\Arquivos de Programas\MSBuild\Microsoft.Cpp\v4.0\version\Platforms\platform\PlatformToolsets\toolset\

Contém diretórios que permitem a compilação para gerar aplicativos do Visual C++ com a version do conjunto de ferramentas.

O espaço reservado platform representa o subdiretório ARM, Win32 ou x64. O espaço reservado toolset representa o subdiretório do conjunto de ferramentas para compilar os aplicativos do Windows, Windows XP ou Windows Phone.

drive:\Arquivos de Programas\MSBuild\Microsoft.Cpp\v4.0\Platforms\platform\PlatformToolsets\toolset\

Contém diretórios que permitem a compilação para gerar aplicativos do Visual C++ 9.0 ou 10.0.

O espaço reservado de platform representa Itanium, Win32, ou subdiretório de x64. O espaço reservado toolset representa o subdiretório do conjunto de ferramentas v90, v100.

Arquivos de suporte

Os diretórios de arquivos de suporte contêm arquivos com as seguintes extensões.

Extensão

Descrição

.targets

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

Para obter mais informações, consulte Elemento Target (MSBuild).

.props

Contém Property Group e elementos XML Property definidos pelo usuário que especificam configurações de arquivo e de parâmetro usadas durante a compilação.

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

Para obter mais informações, consulte Elemento ItemGroup (MSBuild), Elemento ItemDefinitionGroup (MSBuild) e Elemento Item (MSBuild).

.xml

Contém os elementos XML que declara e inicializa elementos de interface de usuário do IDE, como folhas e páginas de propriedades e controles de caixas de texto e de caixa de listagem.

Os arquivos .xml suportam diretamente o IDE, não o MSBuild. No entanto, os valores de propriedades do IDE são atribuídos para criar propriedades e itens.

A maioria dos arquivos .xml está em um subdiretório específico de localidade. Por exemplo, os arquivos para a região de inglês (EUA) estão em (VCTargetsPath)\1033\.

Destinos e propriedades de usuário

Para usar o MSBuild mais efetivamente na linha de comando, é bom saber quais propriedades e destinos são úteis e relevantes. A maioria das propriedades e destinos ajuda a implementar o sistema de compilação do Visual C++ e, consequentemente, não são relevantes para o usuário. Esta seção descreve algumas propriedades e destinos voltados para o usuário que são proveitosos.

Propriedade de PlatformToolset

A propriedade PlatformToolset determina que conjunto de ferramentas do Visual C++ é usado na compilação. O valor da propriedade é concatenado com cadeias de caracteres literais para formar o caminho de um diretório que contém a propriedade e os arquivos de destino que são necessários para compilar um projeto para uma plataforma específica.

Defina a propriedade PlatformToolset para v110 para usar ferramentas e bibliotecas do Visual C++ no Visual Studio 2012 para compilar seu aplicativo.

msbuild myProject.vcxproj /p:PlatformToolset=v110

Defina a propriedade PlatformToolset para v100 para usar ferramentas e bibliotecas do Visual C++ 2010 para compilar seu aplicativo.

msbuild myProject.vcxproj /p:PlatformToolset=v100

Defina a propriedade PlatformToolset para v90 para usar ferramentas e bibliotecas do Visual C++ 2008 para compilar seu aplicativo. O conjunto de ferramentas do Visual C++ 2008 já deve estar instalado no computador para que essa propriedade seja eficaz.

msbuild myProject.vcxproj /p:PlatformToolset=v90

Propriedade de PreferredToolArchitecture

A propriedade PreferredToolArchitecture determina se o compilador e as ferramentas de 32 bits ou 64 bits são usados na compilação. Essa propriedade não afeta a arquitetura ou configuração da plataforma de saída. Por padrão, MSBuild usa a versão x86 de compilador e ferramentas se esta propriedade não está definida, ou é definida como qualquer valor diferente de x64.

Defina a propriedade PreferredToolArchitecture para x64 para usar o compilador e as ferramentas de 64 bits para compilar seu aplicativo.

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

Propriedade UseEnv

Por padrão, as configurações específicas de plataforma para o projeto atual substituem as variáveis de ambiente PATH, INCLUDE, LIB, LIBPATH, CONFIGURATION, e PLATFORM. Defina a propriedade UseEnv para true de modo a 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 C++. No entanto, a maioria é composta de destinos orientados ao sistema que o usuário pode ignorar. A maioria de destinos do sistema são precedidos por um sublinhado (_) ou tem um nome de que inicia com "PrepareFor", "Compute", "Before", "After", "Pre" ou "Post".

A tabela a seguir lista os diversos destinos voltados para o usuário que são proveitosos.

Destino

Descrição

BscMake

Executa a ferramenta Utilitário de Manutenção de Informações de Navegação da Microsoft, bscmake.exe.

Compilação

Compila o projeto.

Este é o destino padrão para um projeto.

ClCompile

Executa a ferramenta do compilador do Visual C++, cl.exe.

Limpar

Exclui arquivos de compilação temporários e intermediários.

Lib

Executa a ferramenta Gerenciador de Bibliotecas de 32 bits da Microsoft, lib.exe.

Link

Executa a ferramenta do vinculador do Visual C++, link.exe.

ManifestResourceCompile

Extrai uma lista de recursos de um manifesto e então executa a Ferramenta de Compilador de Recurso do Microsoft Windows, rc.exe.

Midl

Executa a ferramenta do compilador Linguagem de Definição da Interface da Microsoft (MIDL), midl.exe.

Recompilar

Limpa e em seguida compila seu projeto.

ResourceCompile

Executa a ferramenta Compilador de Recursos do Microsoft Windows, rc.exe.

XdcMake

Executa a ferramenta Documentação XML, xdcmake.exe.

Xsd

Executa a ferramenta Definição de Esquema XML, xsd.exe.

Consulte também

Outros recursos

MSBuild (Visual C++)