Personnalisation des builds C++
Dans les projets C++, les fichiers personnalisés .targets
et .props
ne peuvent pas être utilisés de la même façon pour remplacer les paramètres par défaut. Cet article décrit une autre méthode de personnalisation qui fonctionne avec les builds C++.
Le fichier Directory.Build.props qui est utile pour personnaliser les projets .NET est importé par Microsoft.Common.props, qui est importé dans Microsoft.Cpp.Default.props
, alors que la plupart des valeurs par défaut sont spécifiées dans Microsoft.Cpp.props. Pour un certain nombre de propriétés, il n’est pas possible d’utiliser une condition « si non définie pour l’instant » (car la propriété est déjà définie), mais la valeur par défaut doit être différente pour les propriétés de projet définies dans PropertyGroup
avec Label="Configuration"
(voir Structure de fichiers .vcxproj et .props).
Pour les projets C++, vous pouvez utiliser les propriétés suivantes pour spécifier le ou les fichiers .props
à importer automatiquement avant et après les fichiers Microsoft.Cpp.* :
- ForceImportAfterCppDefaultProps
- ForceImportBeforeCppProps
- ForceImportAfterCppProps
- ForceImportBeforeCppTargets
- ForceImportAfterCppTargets
Pour personnaliser la valeur par défaut des propriétés de toutes les builds C++, créez un autre fichier .props
(par exemple MyProps.props) et définissez la propriété ForceImportAfterCppProps
de Directory.Build.props
pointant vers celui-ci :
<PropertyGroup>
<ForceImportAfterCppProps>$(MsbuildThisFileDirectory)\MyProps.props</ForceImportAfterCppProps>
</PropertyGroup>
MyProps.props est automatiquement importé à la toute fin de Microsoft.Cpp.props.
Personnalisation de toutes les builds C++
Nous vous déconseillons de personnaliser l’installation de Visual Studio, car il n’est pas facile d’effectuer le suivi de ces personnalisations. Si toutefois vous étendez Visual Studio afin de personnaliser les builds C++ pour une plateforme particulière, vous pouvez créer des fichiers .targets
pour chaque plateforme et les placer dans les dossiers d’importation correspondant à ces plateformes dans l’extension Visual Studio.
Le fichier .targets
de la plateforme Win32, Microsoft.Cpp.Win32.targets, contient l’élément Import
suivant :
<Import Project="$(VCTargetsPath)\Platforms\Win32\ImportBefore\*.targets"
Condition="Exists('$(VCTargetsPath)\Platforms\Win32\ImportBefore')"
/>
Il existe un élément similaire à la fin du même fichier :
<Import Project="$(VCTargetsPath)\Platforms\Win32\ImportAfter\*.targets"
Condition="Exists('$(VCTargetsPath)\Platforms\Win32\ImportAfter')"
/>
Des éléments d’importation similaires existent pour d’autres plateformes cibles dans *%ProgramFiles32%\MSBuild\Microsoft.Cpp\v{version}\Platforms*.
Une fois le fichier .targets
inséré dans le dossier ImportAfter
approprié en fonction de la plateforme, MSBuild importe le fichier en question dans chaque build C++ de cette plateforme. Vous pouvez y placer plusieurs fichiers .targets
si nécessaire.
À l’aide de l’extensibilité de Visual Studio, d’autres personnalisations sont possibles, notamment définir une nouvelle plateforme. Pour plus d’informations, consultez Extensibilité du projet C++.
Spécification d’une importation personnalisée en ligne de commande
Pour les fichiers .targets
personnalisés que vous souhaitez inclure dans une build spécifique d’un projet C++, définissez une propriété ForceImportBeforeCppTargets
ou ForceImportAfterCppTargets
(ou les deux) en ligne de commande.
msbuild /p:ForceImportBeforeCppTargets="C:\build\config\Custom.Before.Microsoft.Cpp.Targets" MyCppProject.vcxproj
Dans le cas d’un paramètre global (pour affecter, par exemple, toutes les builds C++ d’une plateforme sur un serveur de build), il existe deux méthodes. Tout d’abord, vous pouvez configurer ces propriétés à l’aide d’une variable d’environnement système qui est toujours définie. Cette technique fonctionne, car MSBuild lit systématiquement l’environnement et crée (ou remplace) les propriétés pour toutes les variables d’environnement.
Contenu connexe
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour