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 true
para 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