Introduction MSBuild pour les développeurs WDK
Cette section présente la terminologie MSBuild de base pour les développeurs WDK, qui sont familiarisés avec Build.exe et NMake.exe. Cette section montre la construction de projets MSBuild simples.
Concepts Nmake pertinents pour MSBuild
Si vous avez travaillé avec Build.exe et les versions précédentes du WDK (avant WDK 8), vous connaissez probablement la terminologie et les concepts utilisés par NMake.exe.
- command : appelle un outil en ligne de commande.
- target : décrit une séquence nommée de commandes.
- dépendance : décrit une cible qui dépend d’autres cibles.
- Nmake est appelé sur un fichier make avec une ou plusieurs cibles spécifiées. Il exécute ensuite toutes les dépendances de manière récursive, puis les commandes de la cible.
- Les fichiers Nmake peuvent inclure d’autres fichiers make pour la gestion robuste de la structure de build.
- Nmake prend également en charge la création de variables nommées qui seront substituées aux paramètres des commandes.
- Nmake prend également en charge les variables automatiques qui sont affectées par le Make.exe lui-même, par exemple, le nom du répertoire ou du chemin d’accès actif.
- Une cible ne s’exécute jamais deux fois au cours d’une seule build. Une fois l’exécution effectuée, une cible est supposée avoir terminé son travail et ne s’exécutera plus, même si une cible ultérieure dans la build en dépend.
Concepts MSBuild
L’extension de fichier MSBuild main pour les projets C++ est .vcxproj.
Les commandes sont désormais appelées tâches, et elles ne sont pas simplement des appels de processus en ligne de commande. Au lieu de cela, les tâches sont des unités de code exécutable que MSBuild peut utiliser pour effectuer des opérations de build atomiques. Pour obtenir la liste complète des tâches, consultez Tâches MSBuild spécifiques à Visual C++.
MSBuild importe les tâches de leurs assemblys CLR (Common Language Runtime) avec l’élément UsingTask , comme le montre l’exemple suivant.
<UsingTask TaskName="TaskName" AssemblyName="AssemblyName" />
Les cibles regroupent les tâches dans un ordre particulier et permettent au processus de génération d’être divisé en unités plus petites.
Un PropertyGroup permet de définir des propriétés à l’aide d’un format convivial. L’exemple suivant montre le format PropertyGroup .
<PropertyGroup> <ProductVersion>9.0.30729</ProductVersion> </PropertyGroup>
Un élément est une variante orientée objet de Property. Alors que le format de propriété est nom/valeur, le format de l’élément est nom/objet où l’objet a plusieurs attributs. Les éléments sont des tableaux d’objets.
Les propriétés sont référencées au format $(project) tandis que les éléments sont référencés au format @(name).
Un ItemGroup est une collection d’Éléments.
Un ItemGroups est généralement une liste de tous les fichiers qui doivent être compilés. La collection de fichiers est ensuite passée à une tâche à l’aide de la notation @(itemname). Pour plus d’informations sur l’utilisation des éléments, consultez Éléments MSBuild.
MSBuild a un certain nombre de propriétés intégrées que vous pouvez également référencer dans un fichier projet.
Pour plus d’informations sur MSBuild et les tâches de génération, consultez Concepts MSBuild et Référence MSBuild.