Información general sobre MSBuild (Visual C++)

MSBuild es el sistema de compilación estándar para los proyectos de Visual C++. Cuando se compila un proyecto en el entorno de desarrollo integrado (IDE) de Visual Studio, se utiliza la herramienta msbuild.exe, un archivo de proyecto basado en XML, y archivos de configuración opcionales. Aunque puede utilizar msbuild.exe y un archivo de proyecto en la línea de comandos, el IDE proporciona una interfaz de usuario que le permite configurar los parámetros y compilar un proyecto con más facilidad. En esta información general se describe cómo Visual C++ utiliza el sistema MSBuild.

Requisitos previos

Lea los siguientes documentos sobre MSBuild.

MSBuild en la línea de comandos

La siguiente instrucción del documento Referencia de la línea de comandos de MSBuild muestra que la herramienta msbuild.exe toma un argumento project file implícito o explícito (un archivo .vcxproj para los proyectos de Visual C++) y cero o más options de línea de comandos.

msbuild.exe [project file] [options]

Utilice las opciones de línea de comandos /target (o /t) y /property (o /p) para invalidar las propiedades y destinos que se especifican en el archivo de proyecto.

Una función esencial del archivo de proyecto es especificar un destino, que es una operación determinada aplicada al proyecto, y las entradas y salidas necesarias para realizar esa operación. Un archivo de proyecto puede especificar uno o más destinos, que pueden incluir un destino predeterminado.

Cada destino consta de una secuencia de una o más tareas. Cada tarea se representa mediante una clase de .NET Framework que contiene un comando ejecutable. Por ejemplo, la tarea CL contiene el comando cl.exe.

Un parámetro de tarea es una propiedad de la tarea de clase que normalmente representa una opción de línea de comandos del comando ejecutable. Por ejemplo, el parámetro FavorSizeOrSpeed de la tarea CL corresponde a las opciones /Os y /Ot del compilador.

Otros parámetros de tarea adicionales admiten la infraestructura de MSBuild. Por ejemplo, el parámetro de tarea Sources especifica un conjunto de tareas que se pueden utilizar en otras tareas. Para obtener más información sobre las tareas de MSBuild, vea Referencia de tareas de MSBuild.

La mayor parte de las tareas requieren entradas y salidas, como nombres de archivo, rutas de acceso, y parámetros de cadena, numéricos o booleanos. Por ejemplo, una entrada habitual es el nombre del archivo de código fuente .cpp que se va a compilar. Un parámetro de entrada importante es una cadena que especifica la configuración de compilación y la plataforma, por ejemplo, "Debug|Win32." Las entradas y salidas se especifican mediante uno o varios elementos Item XML definidos por el usuario que se incluyen en un elemento ItemGroup.

Un archivo de proyecto también puede especificar propiedades definidas por el usuario y elementos de un grupo de definición de elementos. Las propiedades y los elementos forman pares de nombre/valor que se pueden usar como variables en la compilación. El componente de nombre de un par define una macro y el componente de valor declara el valor de macro. Para tener acceso a una macro de propiedad se usa la notación $(name) y para tener acceso a una macro de elemento se usa la notación %(name).

Otros elementos XML de un archivo de proyecto pueden probar las macros y a continuación establecer condicionalmente el valor de una macro o controlar la ejecución de la compilación. Los nombres de macro y las cadenas literales se pueden concatenar para generar estructuras como una ruta de acceso y nombre de archivo. En la línea de comandos, la opción /property establece o invalida una propiedad de proyecto. No se puede hacer referencia a los elementos en la línea de comandos.

El sistema MSBuild puede ejecutar condicionalmente un destino antes o después de otro destino. Además, el sistema puede compilar un destino basándose en si los archivos que usa el destino son más recientes que los archivos que emite.

MSBuild en el IDE

Al establecer las propiedades de proyecto en el IDE y después guardar el proyecto, Visual C++ escribe los valores de proyecto en el archivo de proyecto. El archivo de proyecto contiene valores que son únicos del proyecto, pero no contiene todos los valores necesarios para compilar el proyecto. El archivo de proyecto contiene elementos Import que incluyen una red de archivos de compatibilidad adicionales. Los archivos de compatibilidad contienen las propiedades, destinos y configuraciones restantes necesarios para compilar el proyecto.

La mayoría de los destinos y propiedades de los archivos de compatibilidad existen solamente para implementar el sistema de compilación. En la siguiente sección se analizan algunos destinos y propiedades útiles que puede especificar en la línea de comandos de MSBuild. Para conocer más destinos y propiedades, explore los archivos de los directorios de archivos de compatibilidad.

Directorios de archivos de compatibilidad

De forma predeterminada, los principales archivos de compatibilidad de Visual C++ se encuentran en los siguientes directorios.

Directorio

Descripción

drive:\Archivos de programa\MSBuild\Microsoft.Cpp\v4.0\version\

Contiene los archivos de destino (.targets) y archivos de propiedad (.props) primarios que se utilizan en los destinos. De forma predeterminada, la macro $(VCTargetsPath) hace referencia a este directorio.

drive:\Archivos de programa\MSBuild\Microsoft.Cpp\v4.0\version\Platforms\platform\

Contiene archivos de destino y propiedad específicos de la plataforma que invalidan los destinos y propiedades de su directorio primario. Este directorio también contiene un archivo .dll que define las tareas que se utilizan en los destinos de este directorio.

El marcador de posición platform representa el subdirectorio ARM, Win32 o x64.

drive:\Archivos de programa\MSBuild\Microsoft.Cpp\v4.0\version\Platforms\platform\PlatformToolsets\toolset\

Contiene los directorios que permiten a la compilación generar aplicaciones de Visual C++ con la version especificada del conjunto de herramientas.

El marcador de posición platform representa el subdirectorio ARM, Win32 o x64. El marcador de posición toolset representa el subdirectorio del conjunto de herramientas para crear aplicaciones Windows, Windows XP o Windows Phone.

drive:\Archivos de programa\MSBuild\Microsoft.Cpp\v4.0\Platforms\platform\PlatformToolsets\toolset\

Contiene los directorios que permiten a la compilación generar aplicaciones 9.0 o Visual C++ 10.0.

El marcador de posición platform representa el subdirectorio Itanium, Win32 o x64. El marcador de posición toolset representa el subdirectorio del conjunto de herramientas v90 o v100.

Archivos de compatibilidad

Los directorios de archivos de compatibilidad contienen archivos con las siguientes extensiones.

Extensión

Descripción

.targets

Contiene elementos XML Target que especifican las tareas que se ejecutan en el destino. También puede contener elementos Property Group, Item Group, Item Definition Group, y elementos Item definidos por el usuario que se utilizan para asignar archivos y opciones de línea de comandos a los parámetros de tareas.

Para obtener más información, vea Elemento Target (MSBuild).

.props

Contiene elementos XML Property Group y elementos XML definidos por el usuario Property que especifican valores de archivo y parámetro que se usan en una compilación.

También puede contener elementos XML Item Definition Group y elementos XML definidos por el usuario Item que especifican valores adicionales. Los elementos definidos en un grupo de definiciones de elemento se parecen a las propiedades, pero no se puede tener acceso a ellos desde la línea de comandos. Los archivos de proyecto de Visual C++ utilizan con frecuencia elementos en lugar de propiedades para representar los valores.

Para obtener más información, vea Elemento ItemGroup (MSBuild), Elemento ItemDefinitionGroup (MSBuild) y Elemento Item (MSBuild).

.xml

Contiene elementos XML que declaran e inicializan elementos de la interfaz de usuario del IDE como hojas de propiedades y páginas de propiedades, y controles de cuadro de texto y de cuadro de lista.

Los archivos .xml admiten directamente el IDE, no MSBuild. Sin embargo, los valores de las propiedades del IDE se asignan a los elementos y las propiedades de compilación.

La mayoría de los archivos .xml se encuentran en un subdirectorio específico de la configuración regional. Por ejemplo, los archivos para la región de inglés de Estados Unidos se encuentran en $(VCTargetsPath)\1033\.

Destinos y propiedades de usuario

Para utilizar MSBuild en la línea de comandos de manera más eficaz, conviene saber qué propiedades y destinos son útiles y pertinentes. La mayoría de las propiedades y los destinos ayudan a implementar el sistema de compilación de Visual C++ y, por tanto, no son pertinente para el usuario. En esta sección se describen algunas propiedades y destinos valiosos dirigidos al usuario.

Propiedad PlatformToolset

La propiedad PlatformToolset determina qué conjunto de herramientas Visual C++ se utiliza en la compilación. El valor de la propiedad se concatena con cadenas literal para formar la ruta de acceso a un directorio que contiene los archivos de destino y propiedad necesarios para compilar un proyecto para una plataforma determinada.

Establezca la propiedad PlatformToolset en v110 si desea utilizar las herramientas y bibliotecas de Visual C++ en Visual Studio 2012 para compilar la aplicación.

msbuild myProject.vcxproj /p:PlatformToolset=v110

Establezca la propiedad PlatformToolset en v100 si desea utilizar las herramientas y bibliotecas de Visual C++ 2010 para compilar la aplicación.

msbuild myProject.vcxproj /p:PlatformToolset=v100

Establezca la propiedad PlatformToolset en v90 si desea utilizar las herramientas y bibliotecas de Visual C++ 2008 para compilar la aplicación. Para que funcione esta propiedad, el conjunto de herramientas de Visual C++ 2008 debe estar instalado en el equipo.

msbuild myProject.vcxproj /p:PlatformToolset=v90

Propiedad PreferredToolArchitecture

La propiedad PreferredToolArchitecture determina si el compilador de 32 bits o de 64 bits y las herramientas se utilizan en la compilación. Esta propiedad no afecta a la arquitectura o a la configuración de la plataforma de salida. De forma predeterminada, MSBuild utiliza la versión x86 del compilador y las herramientas si esta propiedad no está establecida o está establecida en cualquier valor distinto de x64.

Establezca la propiedad PreferredToolArchitecture en x64 para utilizar el compilador de 64 bits y herramientas para compilar la aplicación.

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

Propiedad UseEnv

De forma predeterminada, la configuración específica de la plataforma para el proyecto actual invalida las variables de entorno PATH, INCLUDE, LIB, LIBPATH, CONFIGURATION y PLATFORM. Establezca la propiedad UseEnv en true para garantizar que no se invalidan las variables de entorno.

msbuild myProject.vcxproj /p:UseEnv=true

Destinos

Hay centenares de destinos en los archivos de compatibilidad de Visual C++. Sin embargo, la mayoría de ellos son destinos orientados al sistema que el usuario puede omitir. La mayor parte de los destinos de sistema usan un carácter de subrayado (_) como prefijo o un nombre que comienza con "PrepareFor", "Compute", "Before", "After", "Pre" o "Post".

En la siguiente tabla se muestran varios destinos valiosos dirigidos al usuario.

Destino

Descripción

BscMake

Ejecuta la herramienta Utilidad de mantenimiento de información de examen de Microsoft, bscmake.exe.

Compilación

Compila el proyecto.

Este es el destino predeterminado de un proyecto.

ClCompile

Ejecuta la herramienta de compilador de Visual C++, cl.exe.

Limpiar

Elimina los archivos de compilación temporales e intermedios.

Lib

Ejecuta la herramienta de administración de bibliotecas de 32 bits de Microsoft, lib.exe.

Link

Ejecuta la herramienta de vinculador de Visual C++, link.exe.

ManifestResourceCompile

Extrae una lista de recursos de un manifiesto y, a continuación, ejecuta la herramienta de compilador de recursos de Microsoft Windows, rc.exe.

Midl

Ejecuta la herramienta de compilador de Lenguaje de definición de interfaz de Microsoft (MIDL), midl.exe.

Recompilar

Limpia y, a continuación, compila el proyecto.

ResourceCompile

Ejecuta la herramienta del compilador de recursos de Microsoft Windows, rc.exe.

XdcMake

Ejecuta la herramienta de documentación XML, xdcmake.exe.

Xsd

Ejecuta la herramienta de definición de esquemas XML, xsd.exe.

Vea también

Otros recursos

MSBuild (Visual C++)