Définir des propriétés de build et de compilateur

Dans l’IDE, toutes les informations nécessaires pour générer un projet sont exposées en tant que propriétés. Ces informations comprennent le nom de l’application, l’extension (par exemple, DLL, LIB, EXE), les options de compilateur, les options de l’éditeur de liens, les paramètres de débogueur, les étapes de génération personnalisée et bien d’autres choses. En règle générale, vous utilisez des pages de propriétés pour afficher et modifier ces propriétés. Pour accéder aux pages de propriétés, choisissez> Propriétés dunom du projet dans le menu principal, ou cliquez avec le bouton droit sur le nœud du projet dans Explorateur de solutions, puis choisissez Propriétés.

Propriétés par défaut

Quand vous créez un projet, le système attribue des valeurs à différentes propriétés. Les valeurs par défaut varient légèrement en fonction du type de projet et des options que vous choisissez dans l’Assistant Application. Par exemple, un projet ATL possède des propriétés liées aux fichiers MIDL, mais ces propriétés sont absentes dans une application console de base. Les propriétés par défaut sont affichées dans le volet Général des pages de propriétés :

Capture d’écran de la boîte de dialogue Pages de propriétés avec les propriétés Par défaut du projet mises en évidence.

Application de propriétés aux configurations de build et aux plateformes cibles

Certaines propriétés, telles que le nom de l’application, s’appliquent à toutes les variantes de build et plateformes cibles, qu’il s’agisse d’une version de débogage ou d’une version de version. Toutefois, la plupart des propriétés dépendent de la configuration. Pour générer le code correct, le compilateur doit connaître à la fois la plateforme spécifique sur laquelle le programme s’exécutera et les options de compilateur spécifiques à utiliser. Par conséquent, lorsque vous définissez une propriété, il est important de faire attention à la configuration et à la plateforme auxquelles la nouvelle valeur doit s’appliquer. Doit-elle s’appliquer uniquement aux builds Debug Win32, ou doit-elle également s’appliquer à Debug ARM64 et Debug x64 ? Par exemple, la propriété Optimisation , par défaut, est définie sur Maximiser la vitesse (/O2) dans une configuration Release, mais elle est désactivée dans la configuration Debug.

Vous pouvez toujours voir et modifier la configuration et la plateforme à laquelle une valeur de propriété doit s’appliquer. L’illustration suivante montre les pages de propriétés avec les contrôles d’informations de configuration et de plateforme en haut. Lorsque la propriété Optimisation est définie ici, elle s’applique uniquement aux builds Debug Win32, la configuration actuellement active, comme indiqué par les flèches rouges.

Capture d’écran de la boîte de dialogue Pages de propriétés montrant les valeurs de propriété pour la configuration active.

L’illustration suivante montre la même page de propriétés de projet, mais la configuration a été remplacée par Release. Notez le changement de valeur de la propriété Optimisation. Notez également que la configuration active est toujours Debug. Vous pouvez définir ici les propriétés de n’importe quelle configuration, et pas seulement celles de la configuration active.

Capture d’écran de la boîte de dialogue Pages de propriétés montrant les valeurs de propriété pour la configuration de mise en production.

Plateformes cibles

La plateforme cible fait référence au type d’appareil et de système d’exploitation sur lequel l’exécutable s’exécutera. Vous pouvez générer un projet pour plusieurs plateformes. Les plateformes cibles disponibles pour les projets C++ dépendent du type de projet. Ils incluent, sans s’y limiter, Win32, x64, ARM, ARM64, Android et iOS. La plateforme cible x86 que vous pouvez voir dans le Gestionnaire de configuration est identique à Win32 dans les projets C++ natifs. Win32 désigne Windows 32 bits et x64 désigne Windows 64 bits. Pour plus d’informations sur ces deux plateformes, consultez Exécution d’applications 32 bits.

La valeur de plateforme cible n’importe quel processeur que vous pouvez voir dans Configuration Manager n’a aucun effet sur les projets C++ natifs. Il s’applique uniquement à C++/CLI et aux autres types de projets .NET. Pour plus d’informations, consultez /CLRIMAGETYPE (Spécifier le type d’image CLR).

Pour plus d’informations sur la définition des propriétés d’une build Debug, consultez :

Options du compilateur et de l’éditeur de liens C++

Les options du compilateur et de l’éditeur de liens C++ se trouvent sous les nœuds C/C++ et Éditeur de liens dans le volet gauche sous Propriétés de configuration. Ces options se traduisent directement en options de ligne de commande qui seront transmises au compilateur. Pour lire la documentation sur une option spécifique, sélectionnez l’option dans le volet central, puis appuyez sur F1. Vous pouvez également consulter la documentation pour toutes les options dans options du compilateur MSVC et options de l’éditeur de liens MSVC.

La boîte de dialogue Pages de propriétés affiche uniquement les pages de propriétés pertinentes pour le projet actuel. Par exemple, si le projet n’a pas de .idl fichier, la page de propriétés MIDL ne s’affiche pas. Pour plus d’informations sur les paramètres de chaque page de propriétés, consultez Pages de propriétés (C++) .

Valeurs de répertoire et de chemin d’accès

MSBuild prend en charge l’utilisation de constantes au moment de la compilation pour certaines valeurs de chaîne, telles que les répertoires et chemins d’accès inclus, appelés macros. Une macro peut faire référence à une valeur définie par Visual Studio ou le système MSBuild, ou à une valeur définie par l’utilisateur. Les macros ressemblent $(macro-name) à ou %(item-macro-name). Ils sont exposés dans les pages de propriétés, où vous pouvez les faire référence et les modifier à l’aide de l’Éditeur de propriétés. Utilisez des macros au lieu de valeurs codées en dur, telles que les chemins d’accès au répertoire. Les macros facilitent le partage des paramètres de propriété entre des machines et entre des versions de Visual Studio. De plus, vous pouvez mieux vous assurer que vos paramètres de projet participent correctement à l’héritage des propriétés.

L’illustration suivante montre les pages de propriétés d’un projet Visual Studio C++. Dans le volet gauche, la règleVC++ Répertoires est sélectionnée et le volet droit répertorie les propriétés associées à cette règle. Les valeurs de propriété sont souvent des macros, telles que $(VC_SourcePath):

Capture d’écran de la boîte de dialogue Pages de propriétés montrant les répertoires de projet VC.

Vous pouvez utiliser l’Éditeur de propriétés pour afficher les valeurs de toutes les macros disponibles.

Macros prédéfinies

  • Macros globales :
    Les macros globales s’appliquent à tous les éléments d’une configuration de projet. Une macro globale a la syntaxe $(name). Un exemple de macro globale est $(VCInstallDir), qui stocke le répertoire racine de votre installation de Visual Studio. Une macro globale correspond à PropertyGroup dans MSBuild.

  • Macros d’élément
    Les macros d’élément ont la syntaxe %(name). Pour un fichier, une macro d'élément s'applique uniquement à ce fichier ; par exemple, vous pouvez utiliser %(AdditionalIncludeDirectories) pour spécifier les répertoires Include qui s'appliquent uniquement à un fichier particulier. Ce genre de macro d'élément correspond à des métadonnées ItemGroup dans MSBuild. Lorsqu'elle est utilisée dans le contexte d'une configuration de projet, une macro d'élément s'applique à tous les fichiers d'un certain type. Par exemple, la propriété de configuration Définitions du préprocesseur C/C++ peut prendre une macro d’élément %(PreprocessorDefinitions) qui s’applique à tous les fichiers .cpp dans le projet. Ce genre de macro d'élément correspond à des métadonnées ItemDefinitionGroup dans MSBuild. Pour plus d’informations, consultez Définitions d’éléments.

macros définies par l'utilisateur

Vous pouvez créer des macros définies par l’utilisateur à utiliser comme variables dans les builds de projet. Par exemple, vous pouvez créer une macro définie par l'utilisateur qui fournit une valeur pour une étape de génération personnalisée ou un outil de génération personnalisée. Une macro définie par l'utilisateur est une paire nom/valeur. Dans un fichier projet, utilisez la $(name) notation pour accéder à la valeur.

Une macro définie par l’utilisateur est stockée dans une feuille de propriétés. Si votre projet ne contient pas encore de feuille de propriétés, vous pouvez en créer une en suivant les étapes sous Partager ou réutiliser les paramètres de projet Visual Studio.

Pour créer une macro définie par l’utilisateur

  1. Ouvrez la fenêtre Gestionnaire de propriétés . (Dans la barre de menus, choisissez Affichage>Gestionnaire de propriétés ou Afficher>d’autresgestionnaires de propriétés Windows>.) Ouvrez le menu contextuel d’une feuille de propriétés (son nom se termine par .user) et choisissez Propriétés. La boîte de dialogue Pages de propriétés pour cette feuille de propriétés s’ouvre.

  2. Dans le volet gauche de la boîte de dialogue, sélectionnez Macros utilisateur. Dans le volet droit, choisissez le bouton Ajouter une macro pour ouvrir la boîte de dialogue Ajouter une macro utilisateur.

  3. Dans la boîte de dialogue, spécifiez un nom et une valeur pour la macro. Si vous le souhaitez, activez la case à cocher Définir cette macro en tant que variable d’environnement dans l’environnement de génération .

Éditeur de propriétés

Vous pouvez utiliser l'Éditeur de propriétés pour modifier certaines propriétés de type chaîne et sélectionner des macros comme valeurs. Pour accéder à l'Éditeur de propriétés, sélectionnez une propriété dans une page de propriétés, puis cliquez sur la flèche vers le bas située à droite. Si la liste déroulante contient <Modifier>, vous pouvez la choisir pour afficher l’éditeur de propriétés de cette propriété.

Un contrôle de liste déroulante de propriété est utilisé pour accéder à l’éditeur de propriétés.

Dans l’Éditeur de propriétés, vous pouvez choisir le bouton Macros pour afficher les macros disponibles et leurs valeurs actuelles. L’illustration suivante montre l’Éditeur de propriétés pour la propriété Autres répertoires Include après la sélection du bouton Macros. Lorsque la case à cocher Hériter des valeurs par défaut du parent ou du projet est cochée et que vous ajoutez une nouvelle valeur, elle est ajoutée à toutes les valeurs actuellement héritées. Si vous désactivez la case à cocher, votre nouvelle valeur remplace les valeurs héritées. Dans la plupart des cas, laissez la case à cocher activée.

Boîte de dialogue Éditeur de propriétés pour la propriété Inclure les répertoires.

Ajouter un répertoire include à l’ensemble des répertoires par défaut

Lorsque vous ajoutez un répertoire Include à un projet, il est important de ne pas remplacer tous les répertoires par défaut. La bonne façon d’ajouter un répertoire consiste à ajouter le nouveau chemin d’accès, par exemple «C:\MyNewIncludeDir\ », puis à ajouter la $(IncludePath) macro à la valeur de propriété.

Parcourir et rechercher rapidement toutes les propriétés

La page de propriétés Toutes les options (sous le nœud Propriétés>de configuration C/C++ de la boîte de dialogue Pages de propriétés) permet de parcourir et de rechercher rapidement les propriétés disponibles dans le contexte actuel. Elle comporte une zone de recherche spéciale et possède une syntaxe simple pour aider à filtrer les résultats :

Aucun préfixe :
Effectuer une recherche dans les noms de propriétés uniquement (la sous-chaîne ne respecte pas la casse).

'/' ou '-' :
Effectuer une recherche uniquement dans les commutateurs de compilation (le préfixe ne respecte pas la casse)

v:
Effectuer une recherche uniquement dans les valeurs (la sous-chaîne ne respecte pas la casse).

Définir des variables d’environnement pour une build

Le compilateur MSVC (cl.exe) reconnaît certaines variables d’environnement, en particulier LIB, LIBPATH, PATHet INCLUDE. Lorsque vous générez avec l’IDE, les propriétés définies dans la page de propriétés des répertoires VC++ sont utilisées pour définir ces variables d’environnement. Si LIBles valeurs , LIBPATHet INCLUDE ont déjà été définies, par exemple par une invite de commandes développeur, elles sont remplacées par les valeurs des propriétés MSBuild correspondantes. La build ajoute ensuite la valeur de la propriété Répertoires exécutables VC++ à PATH. Vous pouvez définir une variable d’environnement définie par l’utilisateur en créant une macro définie par l’utilisateur, puis en cochant la case qui indique Définir cette macro en tant que variable d’environnement dans l’environnement de génération.

Définir des variables d’environnement pour une session de débogage

Dans le volet gauche de la boîte de dialogue Pages de propriétés du projet, développez Propriétés de configuration , puis sélectionnez Débogage.

Dans le volet droit, modifiez les paramètres du projet Environnement ou Fusionner l’environnement , puis choisissez le bouton OK .

Dans cette section

Partager ou réutiliser les paramètres de projet Visual Studio
Comment créer un .props fichier avec des paramètres de build personnalisés qui peuvent être partagés ou réutilisés.

Héritage de propriétés de projet
Décrit l’ordre d’évaluation des .propsvariables , .targets, .vcxproj , et d’environnement dans le processus de génération.

Modifier les propriétés et les cibles sans changer le fichier projet
Comment créer des paramètres de build temporaires sans avoir à modifier un fichier projet.

Voir aussi

Projets Visual Studio - C++
.vcxproj et .props structure de fichiers
Fichiers XML des pages de propriétés