Partager via


Vue d'ensemble de MSBuild (Visual C++)

MSBuild est le système de génération standard pour les projets Visual C++. Lorsque vous générez un projet dans l'environnement de développement intégré Visual Studio (IDE), ce dernier utilise l'outil msbuild.exe, un fichier projet basé sur XML ainsi que des fichiers de paramètres facultatifs. L'IDE fournit une interface utilisateur vous permettant de configurer des paramètres et de générer des projets plus facilement, toutefois, il est toujours possible d'utiliser msbuild.exe et les fichiers projet depuis la ligne de commande. Cette vue d'ensemble décrit la manière dont Visual C++ utilise le système MSBuild.

Configuration requise

Lisez les documents suivants à propos de MSBuild.

MSBuild depuis la ligne de commande

L'instruction suivante, extraite du document Référence de la ligne de commande MSBuild, montre que l'outil msbuild.exe prend un argument project file implicite ou explicite (fichier .vcxproj pour les projets Visual C++) et zéro, une ou plusieurs options de ligne de commande.

msbuild.exe [project file] [options]

Utilisez les options de ligne de commande /target (ou /t) et /property (ou /p) pour substituer les propriétés et cibles spécifiées dans le fichier projet.

L'une des fonctions essentielles du fichier projet est de spécifier une cible, qui est une opération spécifique appliquée à votre projet, ainsi que les entrées et sorties requises pour l'exécution de cette opération. Un fichier projet peut spécifier une ou plusieurs cibles pouvant inclure une cible par défaut.

Chaque cible se compose d'une séquence d'une ou plusieurs tâches. Chaque tâche est représentée par une classe .NET Framework qui contient une commande exécutable. Par exemple, la tâche CL contient la commande cl.exe.

Un paramètre de tâche est une propriété de la tâche de classe représentant généralement une option de ligne de commande de la commande exécutable. Par exemple, le paramètre FavorSizeOrSpeed de la tâche CL correspond aux options /Os et /Ot du compilateur.

Des paramètres de tâche supplémentaires prennent en charge l'infrastructure MSBuild. Par exemple, le paramètre de tâche Sources spécifie un ensemble de tâches pouvant être consommées par d'autres tâches. Pour plus d'informations sur les tâches MSBuild, consultez Référence des tâches MSBuild.

La plupart des tâches requièrent des entrées et des sorties, telles que des noms de fichiers, des chemins d'accès ainsi que des paramètres numériques, booléens ou de chaîne. Une entrée commune est, par exemple, le nom d'un fichier source .cpp à compiler. L'un des paramètres d'entrée importants est une chaîne permettant de spécifier la configuration de la build et la plateforme, par exemple, « Debug|Win32 ». Les entrées et sorties sont spécifiées par un ou plusieurs éléments XML Item définis par l'utilisateur, contenus dans un élément ItemGroup.

Un fichier projet peut également spécifier des propriétés définies par l'utilisateur ainsi que des éléments de groupe de définitions d'éléments. Les propriétés et éléments forment des paires nom/valeur pouvant être utilisées comme variables dans la build. Le composant de nom d'une paire définit une macro et le composant de valeur déclare la valeur de macro. Vous pouvez accéder à une macro de propriété à l'aide de la notation $(name) et à une macro d'élément à l'aide de la notation %(name).

D'autres éléments XML d'un fichier projet peuvent tester des macros, puis définir la valeur d'une macro ou contrôler l'exécution de la génération de manière conditionnelle. Les noms de macros et les chaînes littérales peuvent être concaténées pour générer des constructions telles qu'un chemin d'accès ou un nom de fichier. Sur la ligne de commande, l'option /property définit ou substitue une propriété du projet. Les éléments ne peuvent pas être référencés depuis la ligne de commande.

Le système MSBuild peut exécuter, de manière conditionnelle, une cible avant ou après une autre cible. Le système peut également générer une cible si les fichiers que la cible consomme sont plus récents que les fichiers qu'elle émet.

MSBuild dans l'IDE

Lorsque vous définissez les propriétés du projet dans l'IDE puis enregistrez le projet, Visual C++ écrit les paramètres du projet dans votre fichier projet. Le fichier projet contient des paramètres qui sont uniques à votre projet mais ne contient pas tous les paramètres requis pour générer ce dernier. Le fichier projet contient des éléments Import qui comprennent un réseau de fichiers de support supplémentaires. Les fichiers de support contiennent les propriétés, cibles et paramètres restants nécessaires à la génération du projet.

La plupart des cibles et propriétés contenues dans les fichiers de support ont pour seul but d'implémenter le système de génération. La section suivante indique certaines cibles et propriétés utiles pouvant être spécifiées depuis la ligne de commande MSBuild. Pour connaître les autres cibles et propriétés, explorez les fichiers situés dans les répertoires de fichiers de support.

Répertoires de fichiers de support

Par défaut, les fichiers de support principaux de Visual C++ se trouvent dans les répertoires indiqués ci-dessous.

Répertoire

Description

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\version\

Contient les fichiers cibles (.targets) et fichiers de propriété (.props) principaux utilisés par les cibles. Par défaut, la macro $(VCTargetsPath) référence ce répertoire.

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\version\Platforms\platform\

Contient les fichiers cible et fichiers de propriété spécifiques à la plateforme qui substituent les cibles et les propriétés de son répertoire parent. Ce répertoire contient également un fichier .DLL qui définit les tâches utilisées par les cibles de ce répertoire.

L'espace réservé platform représente le sous-répertoire ARM, Win32 ou x64.

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\version\Platforms\platform\PlatformToolsets\toolset\

Contient les répertoires qui permettent à la build de générer des applications Visual C++ avec la version spécifiée de l'ensemble d'outils.

L'espace réservé platform représente le sous-répertoire ARM, Win32 ou x64. L'espace réservé toolset représente le sous-répertoire d'ensemble d'outils pour générer des applications Windows, Windows XP, ou Windows Phone.

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\platform\PlatformToolsets\toolset\

Contient les répertoires permettant à la build de générer des applications 9.0 ou Visual C++  10.0.

L'espace réservé platform représente le sous-répertoire Itanium, Win32 ou x64. L'espace réservé toolset représente le sous-répertoire d'ensemble d'outils v90 ou v100.

Fichiers de support

Les répertoires de 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 exécutées par la cible. Il peut également contenir des éléments Property Group, Item Group, Item Definition Group et Item définis par l'utilisateur, 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ément (MSBuild).

.props

Contient des éléments XML Property Group et Property définis par l'utilisateur, qui spécifient la configuration des fichiers et des paramètres utilisés pendant la génération.

Il peut également contenir des éléments XML Item Definition Group et Item définis par l'utilisateur, qui spécifient des paramètres supplémentaires. Les éléments définis dans un groupe de définitions d'éléments sont similaires aux propriétés, mais ne sont pas accessibles à partir de la ligne de commande. Les fichiers projet Visual C++ utilisent fréquemment des éléments au lieu de propriétés pour représenter des paramètres.

Pour plus d'informations, consultez ItemGroup, élément (MSBuild), ItemDefinitionGroup, élément (MSBuild) et Item, élément (MSBuild).

.xml

Contient des éléments XML qui déclarent et initialisent des éléments de l'interface utilisateur IDE tels que les feuilles et les pages de propriétés, et les contrôles de zone de texte et de zone de liste.

Les fichiers .xml prennent directement en charge l'IDE mais pas MSBuild. Toutefois, les valeurs des propriétés IDE sont assignées aux propriétés et éléments de la build.

La plupart des fichiers .xml se trouvent dans un sous-répertoire spécifique aux paramètres régionaux. Par exemple, les fichiers pour la région EN-US se trouvent dans le sous-répertoire $(VCTargetsPath)\1033\.

Cibles et propriétés utilisateur

Pour utiliser MSBuild plus efficacement sur la ligne de commande, il est utile de connaître les propriétés et cibles pertinentes. La plupart des propriétés et cibles aident à implémenter le système de génération Visual C++, et ne sont, par conséquent, pas utiles à l'utilisateur. Cette section décrit certaines propriétés et cibles orientées utilisateur utiles.

Propriété PlatformToolset

La propriété PlatformToolset détermine quel ensemble d'outils Visual C++ est utilisé dans la build. La valeur de la propriété est concaténée avec des chaînes littérales pour former le chemin d'accès d'un répertoire contenant les fichiers cible et de propriété nécessaires à la génération d'un projet pour une plateforme particulière.

Affectez à la propriété PlatformToolset la valeur v110 pour utiliser des outils et bibliothèques Visual C++ dans Visual Studio 2012 pour la génération de votre application.

msbuild myProject.vcxproj /p:PlatformToolset=v110

Affectez à la propriété PlatformToolset la valeur v100 pour utiliser des outils et bibliothèques Visual C++ 2010 pour la génération de votre application.

msbuild myProject.vcxproj /p:PlatformToolset=v100

Affectez à la propriété PlatformToolset la valeur v90 pour utiliser des outils et bibliothèques Visual C++ 2008 pour la génération de votre application. Pour pouvoir utiliser cette propriété, l'ensemble d'outils Visual C++ 2008 doit déjà être installé sur votre ordinateur.

msbuild myProject.vcxproj /p:PlatformToolset=v90

Propriété PreferredToolArchitecture

La propriété PreferredToolArchitecture détermine si le compilateur 32 bits ou 64 bits et les outils sont utilisés dans la build. Cette propriété n'affecte pas l'architecture ou la configuration de sortie de plateforme. Par défaut, MSBuild utilise la version x86 du compilateur et des outils si cette propriété n'est pas définie, ou est définie sur une valeur autre que x64.

Affectez à la propriété PreferredToolArchitecture la valeur x64 pour utiliser le compilateur et les outils 64 bits pour générer votre application.

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

Propriété UseEnv

Par défaut, les paramètres spécifiques à la plateforme du projet actuel substituent les variables d'environnement PATH, INCLUDE, LIB, LIBPATH, CONFIGURATION et PLATFORM. Affectez à la propriété UseEnv la valeur true afin de garantir que les variables d'environnement ne soient pas substituées.

msbuild myProject.vcxproj /p:UseEnv=true

Cibles

Les fichiers de support Visual C++ contiennent des centaines de cibles. Toutefois, la plupart sont des cibles orientées système que l'utilisateur peut ignorer. La plupart des cibles système sont préfixées par un trait de soulignement (_) ou possèdent un nom commençant par « PrepareFor », « Compute », « Before », « After », « Pre » ou « Post ».

Le tableau suivant répertorie 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.

Il s'agit de la cible par défaut d'un projet.

ClCompile

Exécute l'outil de compilateur Visual C++, cl.exe.

Clean

Supprime les fichiers de génération temporaires et intermédiaires.

Lib

Exécute le Gestionnaire de bibliothèques 32 bits de Microsoft, lib.exe.

Link

Exécute l'éditeur de liens Visual C++, link.exe.

ManifestResourceCompile

Extrait une liste des ressources d'un manifeste, puis exécute le compilateur de ressources Microsoft Windows, rc.exe.

Midl

Exécute le compilateur MIDL (Microsoft Interface Definition Language), midl.exe.

Rebuild

Nettoie puis génère votre projet.

ResourceCompile

Exécute le compilateur de ressources Microsoft Windows, rc.exe.

XdcMake

Exécute l'outil XML Documentation, xdcmake.exe.

Xsd

Exécute l'outil XML Schema Definition, xsd.exe.

Voir aussi

Autres ressources

MSBuild (Visual C++)