Parámetros internos de MSBuild para proyectos de C++

Cuando se establecen las propiedades del proyecto en el IDE y después se guarda el proyecto, Visual Studio escribe la configuración del proyecto en el archivo de proyecto. El archivo del proyecto contiene las configuraciones que son única del proyecto. Sin embargo, no contiene toda la configuración necesaria para compilar el proyecto. El archivo de proyecto contiene elementos Import que incluyen una red de archivos de soporte técnico adicionales. Los archivos de soporte técnico contienen las propiedades, los destinos y las configuraciones restantes necesarias para compilar el proyecto.

La mayoría de los destinos y propiedades de los archivos auxiliares existen solamente para implementar el sistema de compilación. Este artículo describe 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 auxiliares.

Directorios de archivos auxiliares

De forma predeterminada, los principales archivos auxiliares de Visual Studio se encuentran en los directorios siguientes. Esta información es propia de la versión.

Visual Studio 2022 y 2019

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

    Contiene los principales archivos de destino (.targets) y de propiedades (.props) que usan los destinos. De forma predeterminada, la macro $(VCTargetsPath) hace referencia a este directorio. El marcador de posición <version> hace referencia a la versión de Visual Studio: v170 para Visual Studio 2022, v160 para Visual Studio 2019 o v150 para Visual Studio 2017.

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

    Contiene los archivos de destinos y propiedades específicos de la plataforma que invalidan los destinos y las propiedades en su directorio principal. Este directorio también contiene un archivo DLL que define las tareas que se usan en los destinos de este directorio. El marcador de posición <platform> representa el subdirectorio ARM, ARM64, Win32 o x64.

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

    Contiene los directorios que permiten que la compilación genere aplicaciones C++ mediante el <toolset> especificado. El marcador de posición <platform> representa el subdirectorio ARM, ARM64, Win32 o x64. El marcador de posición <toolset> representa el subdirectorio del conjunto de herramientas.

Visual Studio 2017

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

    Contiene los principales archivos de destino (.targets) y de propiedades (.props) que usan los destinos. De forma predeterminada, la macro $(VCTargetsPath) hace referencia a este directorio.

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

    Contiene los archivos de destinos y propiedades específicos de la plataforma que invalidan los destinos y las propiedades en su directorio principal. Este directorio también contiene un archivo DLL que define las tareas que se usan en los destinos de este directorio. El marcador de posición <platform> representa el subdirectorio ARM, ARM64, Win32 o x64.

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

    Contiene los directorios que permiten que la compilación genere aplicaciones C++ mediante el <toolset> especificado. 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.

Visual Studio 2015 y anterior

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

    Contiene los principales archivos de destino (.targets) y de propiedades (.props) que usan los destinos. De forma predeterminada, la macro $(VCTargetsPath) hace referencia a este directorio.

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

    Contiene los archivos de destinos y propiedades específicos de la plataforma que invalidan los destinos y las propiedades en su directorio principal. Este directorio también contiene un archivo DLL que define las tareas que se usan en los destinos de este directorio. El marcador de posición <platform> representa el subdirectorio ARM, Win32 o x64.

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

    Contiene los directorios que permiten que la compilación genere aplicaciones C++ mediante el <toolset> especificado. El marcador de posición <version> es V110 para Visual Studio 2012, V120 para Visual Studio 2013 y V140 para Visual Studio 2015. 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. Por ejemplo, es v140 para compilar las aplicaciones de Windows mediante el conjunto de herramientas de Visual Studio 2015. O bien, v120_xp para compilar en Windows XP mediante el conjunto de herramientas de Visual Studio 2013.

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

    Las rutas de acceso que permiten que la compilación genere aplicaciones de Visual Studio 2008 o Visual Studio 2010 no incluyen <version>. En esas versiones, 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 auxiliares

Los directorios de archivos auxiliares contienen archivos con estas extensiones:

Extensión Descripción
.targets Contiene elementos XML Target que especifican las tareas que ejecuta el destino. También puede contener elementos PropertyGroup, ItemGroup, ItemDefinitionGroup y Item definidos por el usuario que se usan para asignar archivos y opciones de la línea de comandos a los parámetros de tarea.

Para más información, vea Elemento (MSBuild)Target.
.props Contiene los elementos XML Property Group y Property definidos por el usuario que especifican los valores de archivo y parámetros que se usan durante una compilación.

También puede contener los elementos XML ItemDefinitionGroup y Item definido por el usuario que especifican opciones de configuración adicionales. Los elementos definidos en un grupo de definición de elementos se parecen a las propiedades, pero no son accesibles desde la línea de comandos. En los archivos de proyecto de Visual Studio se usan con frecuencia elementos en lugar de propiedades para representar valores.

Para más información, vea ItemGroup Elemento (MSBuild), ItemDefinitionGroup Elemento (MSBuild) y Item Elemento (MSBuild).
.xml Contiene elementos XML que declaran e inicializan los elementos de la interfaz de usuario de IDE. Por ejemplo, las hojas de propiedades, las páginas de propiedades, los controles de cuadro de texto y los controles de cuadro de lista.

Los archivos .xml admiten directamente el IDE, no MSBuild. Pero los valores de propiedades del IDE se asignan a propiedades y elementos 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 (EE. UU.) están en $(VCTargetsPath)\1033\.

Propiedades y destinos del usuario

Para usar MSBuild de forma efectiva, es conveniente saber qué propiedades y destinos son útiles y relevantes. La mayoría de las propiedades y los destinos facilitan la implementación del sistema de compilación de Visual Studio y no son relevantes para el usuario. En esta sección se describen las propiedades orientados al usuario y los destinos que vale la pena conocer.

Propiedad PlatformToolset

La propiedad PlatformToolset determina qué conjunto de herramientas de MSVC se usa en la compilación. De forma predeterminada, se usa el conjunto de herramientas actual. Cuando se establece esta propiedad, su valor se concatena con las cadenas literales para formar la ruta de acceso. Es el directorio el que contiene los archivos de propiedad y de destino necesarios para compilar un proyecto en una plataforma concreta. Se debe instalar el conjunto de herramientas de la plataforma para poder compilar con esa versión del conjunto de herramientas de la plataforma.

Por ejemplo, establezca la propiedad PlatformToolset en v140 para usar las herramientas y bibliotecas de Visual Studio 2015 para compilar la aplicación:

msbuild myProject.vcxproj /p:PlatformToolset=v140

Propiedad PreferredToolArchitecture

La propiedad PreferredToolArchitecture determina si en la compilación se usan el compilador y las herramientas de 32 bits o 64 bits. Esta propiedad no afecta ni a la arquitectura ni a la configuración de la plataforma de salida. Si no se establece esta propiedad, MSBuild usa de manera predeterminada la versión x86 del compilador y las herramientas.

Por ejemplo, establezca la propiedad PreferredToolArchitecture en x64 para usar el compilador y las herramientas de 64 bits para compilar la aplicación:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

Propiedad UseEnv

De manera 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 truepara garantizar que las variables de entorno no se invaliden.

msbuild myProject.vcxproj /p:UseEnv=true

Destinos

En los archivos auxiliares de Visual Studio hay centenares de destinos. Pero la mayoría son destinos orientados al sistema que el usuario puede omitir. La mayoría de los destinos de sistema están precedidos por un guion bajo (_) o tienen un nombre que comienza con PrepareFor, Compute, Before, After, Pre o Post.

En la tabla siguiente se enumeran varios destinos útiles orientados al usuario.

Destino Descripción
BscMake Ejecuta la herramienta Utilidad de mantenimiento de información de examen de Microsoft, bscmake.exe.
Build Compila el proyecto.

Este es el destino predeterminado para un proyecto.
ClCompile Ejecuta la herramienta del compilador MSVC, cl.exe.
Clean Elimina los archivos de compilación temporales e intermedios.
Lib Ejecuta la herramienta del Administrador de bibliotecas de Microsoft de 32 bits, lib.exe.
Link Ejecuta la herramienta del enlazador de MSVC, link.exe.
ManifestResourceCompile Extrae una lista de recursos de un manifiesto y, después, ejecuta la herramienta de compilador de recursos de Microsoft Windows, rc.exe.
Midl Ejecuta la herramienta de compilador Lenguaje de definición de interfaz de Microsoft (MIDL), midl.exe.
Rebuild Limpia y después compila el proyecto.
ResourceCompile Ejecuta la herramienta Compilador de recursos de Microsoft Windows, rc.exe.
XdcMake Ejecuta la herramienta de documentación XML, xdcmake.exe.
Xsd Ejecuta la herramienta Definición de esquemas XML, xsd.exe. Vea la nota.

Nota:

En Visual Studio 2017 y versiones posteriores, la compatibilidad con los archivos en los proyectos de C++ .xsd está en desuso. Aún puede usar Microsoft.VisualC.CppCodeProvider si agrega manualmente CppCodeProvider.dll al GAC.

Consulte también

Referencia de tareas de MSBuild
BscMake task
CL task
CPPClean task
LIB task
Link task
MIDL task
MT task
RC task
SetEnv task
VCMessage task
XDCMake task