Composants internes MSBuild pour les projets C++
Quand vous définissez des propriétés de projet dans l’IDE et enregistrez le projet, Visual Studio écrit les paramètres du projet dans votre fichier projet. Le fichier projet contient des paramètres uniques à votre projet. Toutefois, il ne contient pas tous les paramètres requis pour générer votre projet. Le fichier projet contient des Import
éléments qui incluent un réseau de fichiers de support supplémentaires . Les fichiers de support contiennent les propriétés, cibles et paramètres restants requis pour générer le projet.
La plupart des cibles et propriétés dans les fichiers de support ont pour seul but d’implémenter le système de build. Cet article décrit les cibles et propriétés utiles que vous pouvez spécifier sur la ligne de commande MSBuild. Pour découvrir d’autres cibles et propriétés, explorez les fichiers dans les répertoires des fichiers de support.
Par défaut, les principaux fichiers de support Visual Studio sont situés dans les répertoires suivants. Ces informations sont spécifiques à la version.
%VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\
Contient les fichiers cibles principaux (
.targets
) et les fichiers de propriété (.props
) utilisés par les cibles. Par défaut, la$(VCTargetsPath)
macro fait référence à ce répertoire. L’espace<version>
réservé fait référence à la version de Visual Studio : v170 pour Visual Studio 2022, v160 pour Visual Studio 2019 ou v150 pour Visual Studio 2017.%VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\
Contient les fichiers cibles et de propriétés spécifiques à la plateforme qui remplacent les cibles et propriétés dans le répertoire parent. Ce répertoire contient également une DLL qui définit les tâches qui sont utilisées par les cibles dans ce répertoire. L’espace
<platform>
réservé représente le sous-répertoire ARM, ARM64, Win32 ou x64.%VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\
Contient les répertoires qui permettent à la génération de générer des applications C++ à l’aide du répertoire spécifié
<toolset>
. L’espace<platform>
réservé représente le sous-répertoire ARM, ARM64, Win32 ou x64. L’espace<toolset>
réservé représente le sous-répertoire de l’ensemble d’outils.
%VSINSTALLDIR%Common7\IDE\VC\VCTargets\
Contient les fichiers cibles principaux (
.targets
) et les fichiers de propriété (.props
) utilisés par les cibles. Par défaut, la$(VCTargetsPath)
macro fait référence à ce répertoire.%VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\
Contient les fichiers cibles et de propriétés spécifiques à la plateforme qui remplacent les cibles et propriétés dans le répertoire parent. Ce répertoire contient également une DLL qui définit les tâches qui sont utilisées par les cibles dans ce répertoire. L’espace
<platform>
réservé représente le sous-répertoire ARM, ARM64, Win32 ou x64.%VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\PlatformToolsets\<toolset>\
Contient les répertoires qui permettent à la génération de générer des applications C++ à l’aide du répertoire spécifié
<toolset>
. L’espace<platform>
réservé représente le sous-répertoire ARM, Win32 ou x64. L’espace<toolset>
réservé représente le sous-répertoire de l’ensemble d’outils.
<drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\
Contient les fichiers cibles principaux (
.targets
) et les fichiers de propriété (.props
) utilisés par les cibles. Par défaut, la macro $(VCTargetsPath) référence ce répertoire.<drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\
Contient les fichiers cibles et de propriétés spécifiques à la plateforme qui remplacent les cibles et propriétés dans le répertoire parent. Ce répertoire contient également une DLL qui définit les tâches qui sont utilisées par les cibles dans ce répertoire. L’espace
<platform>
réservé représente le sous-répertoire ARM, Win32 ou x64.<drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\
Contient les répertoires qui permettent à la génération de générer des applications C++ à l’aide du répertoire spécifié
<toolset>
. L’espace<version>
réservé est V110 pour Visual Studio 2012, V120 pour Visual Studio 2013 et V140 pour Visual Studio 2015. L’espace<platform>
réservé représente le sous-répertoire ARM, Win32 ou x64. L’espace<toolset>
réservé représente le sous-répertoire de l’ensemble d’outils. Par exemple, il s’agit de v140 pour créer des applications Windows à l’aide de l’ensemble d’outils Visual Studio 2015. Ou, v120_xp générer pour Windows XP à l’aide de l’ensemble d’outils Visual Studio 2013.<drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\Platforms\<platform>\PlatformToolsets\<toolset>\
Les chemins d’accès qui permettent à la build de générer des applications Visual Studio 2008 ou Visual Studio 2010 n’incluent pas le
<version>
fichier . Dans ces versions, l’espace<platform>
réservé représente le sous-répertoire Itanium, Win32 ou x64. L’espace<toolset>
réservé représente le sous-répertoire de l’ensemble d’outils v90 ou v100.
Les répertoires des fichiers de support contiennent des fichiers avec les extensions suivantes :
Extension | Description |
---|---|
.targets |
Contient des éléments XML Target qui spécifient les tâches qui sont exécutées par la cible. Peut également contenir des éléments PropertyGroup , ItemGroup , ItemDefinitionGroup et Item définis par l’utilisateur qui sont utilisés pour assigner des fichiers et des options de ligne de commande aux paramètres de tâche.Pour plus d’informations, consultez Target l’élément (MSBuild) . |
.props |
Contient des éléments XML Property définis par l’utilisateur et Property Group qui spécifient des paramètres de fichier et des paramètres qui sont utilisés pendant une génération.Peut également contenir des éléments XML Item définis par l’utilisateur et ItemDefinitionGroup qui spécifient des paramètres supplémentaires. Les éléments définis dans un groupe de définitions d’éléments ressemblent à des propriétés, mais ils ne sont pas accessibles à partir de la ligne de commande. Les fichiers projet Visual Studio utilisent fréquemment des éléments au lieu de propriétés pour représenter les paramètres.Pour plus d’informations, consultez Element (MSBuild), ItemDefinitionGroup Element (MSBuild) et Item Element (MSBuild).ItemGroup |
.xml |
Contient des éléments XML qui déclarent et initialisent des éléments d’interface utilisateur de l’IDE. Par exemple, les feuilles de propriétés, les pages de propriétés, les contrôles de zone de texte et les contrôles de zone de liste. Les .xml fichiers prennent directement en charge l’IDE, et non MSBuild. Toutefois, les valeurs des propriétés IDE sont assignées pour générer des propriétés et des éléments.La plupart des .xml fichiers se trouvent dans un sous-répertoire spécifique aux paramètres régionaux. Par exemple, les fichiers de la région English-US se trouvent dans $(VCTargetsPath)\1033\ . |
Pour utiliser efficacement MSBuild, il permet de savoir quelles propriétés et cibles sont utiles et pertinentes. La plupart des propriétés et des cibles permettent d’implémenter le système de génération Visual Studio et ne sont pas pertinents pour l’utilisateur. Cette section décrit les propriétés orientées utilisateur et les cibles dont vous avez la connaissance.
La propriété PlatformToolset
identifie l’ensemble d’outils MSVC utilisé dans la génération. Par défaut, l’ensemble d’outils actuel est utilisé. Lorsque cette propriété est définie, sa valeur est concaténée avec des chaînes littérales pour former le chemin d’accès. Il s’agit du répertoire qui contient les fichiers de propriété et de cible requis pour générer un projet pour une plateforme particulière. L’ensemble d’outils de plateforme doit être installé pour générer à l’aide de cette version d’ensemble d’outils de plateforme.
Par exemple, affectez à la propriété PlatformToolset
la valeur v140
afin d’utiliser les bibliothèques et les outils Visual Studio 2015 pour générer votre application :
msbuild myProject.vcxproj /p:PlatformToolset=v140
La propriété PreferredToolArchitecture
détermine si les outils et le compilateur 32 bits ou 64 bits sont utilisés dans la génération. Cette propriété n’affecte pas l’architecture ou la configuration de la plateforme de sortie. Par défaut, MSBuild utilise la version x86 du compilateur et des outils si cette propriété n’est pas définie.
Par exemple, affectez à la propriété PreferredToolArchitecture
la valeur x64
afin d’utiliser les outils et le compilateur 64 bits pour générer votre application :
msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64
Par défaut, les paramètres propres à la plateforme pour le projet actuel remplacent les PATH
variables d’environnement , PLATFORM
INCLUDE
LIB
LIBPATH
CONFIGURATION
et les variables d’environnement. Définissez la UseEnv
propriété pour true
garantir que les variables d’environnement ne sont pas remplacées.
msbuild myProject.vcxproj /p:UseEnv=true
Il existe des centaines de cibles dans les fichiers de support Visual Studio. Toutefois, la plupart sont des cibles orientées système que l’utilisateur peut ignorer. La plupart des cibles système sont précédées d’un trait de soulignement (_
) ou ont un nom commençant par PrepareFor
, , Compute
Before
, After
, Pre
ou Post
.
Le tableau suivant liste plusieurs cibles orientées utilisateur utiles.
Cible | Description |
---|---|
BscMake |
Exécute l’outil Microsoft Browse Information Maintenance Utility. bscmake.exe |
Build |
Génère le projet. Cette cible est la valeur par défaut d’un projet. |
ClCompile |
Exécute l’outil de compilateur MSVC. cl.exe |
Clean |
Supprime les fichiers de génération temporaires et intermédiaires. |
Lib |
Exécute l’outil Gestionnaire de bibliothèques Microsoft 32 bits. lib.exe |
Link |
Exécute l’outil éditeur de liens MSVC. link.exe |
ManifestResourceCompile |
Extrait une liste de ressources à partir d’un manifeste, puis exécute l’outil Compilateur de ressources Microsoft Windows. rc.exe |
Midl |
Exécute l’outil de compilateur MIDL (Microsoft Interface Definition Language), midl.exe . |
Rebuild |
Nettoie, puis génère votre projet. |
ResourceCompile |
Exécute l’outil Compilateur de ressources Microsoft Windows. rc.exe |
XdcMake |
Exécute l’outil de documentation XML. xdcmake.exe |
Xsd |
Exécute l’outil De définition de schéma XML. xsd.exe Voir la note. |
Notes
Dans Visual Studio 2017 et versions ultérieures, la prise en charge du projet C++ pour .xsd
les fichiers est déconseillée. Vous pouvez toujours utiliser Microsoft.VisualC.CppCodeProvider
en ajoutant CppCodeProvider.dll
manuellement au GAC.
Informations de référence sur les tâches MSBuild
BscMake
tâche
CL
tâche
CPPClean
tâche
LIB
tâche
Link
tâche
MIDL
tâche
MT
tâche
RC
tâche
SetEnv
tâche
VCMessage
tâche
XDCMake
tâche