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

Dans l’IDE, les propriétés exposent les informations nécessaires à la génération d’un projet. 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 les pages de propriétés pour voir et modifier ces propriétés. Pour accéder aux pages de propriétés, choisissez Projet> Propriétés de nom-projet dans le menu principal, ou cliquez avec le bouton droit sur le nœud du projet dans l’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 a des propriétés relatives 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 des propriétés de projet Visual Studio.

La page Général est ouverte. La section Valeurs par défaut du projet est mise en évidence. Notamment, Type de configuration a la valeur Application (.exe), Utilisation des MFC a la valeur Utiliser les bibliothèques Windows standard, Jeu de caractères a la valeur Utiliser le jeu de caractères Unicode, Prise en charge du Common Language Runtime a la valeur Pas de prise en charge du Common Language Runtime, Optimisation de l’ensemble du programme a la valeur Pas d’optimisation de l’ensemble du programme, et Prise en charge d’applications du Windows Store a la valeur Non.

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

Certaines propriétés, par exemple le nom d’application, s’appliquent à toutes les variantes de build et toutes les plateformes cibles, qu’il s’agisse d’une build de débogage ou de mise en production. Toutefois, la plupart des propriétés dépendent de la configuration. Pour générer le code approprié, le compilateur doit connaître à la fois la plateforme spécifique sur laquelle le programme s’exécute et les options de compilateur spécifiques à utiliser. Ainsi, quand 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 aux builds Debug ARM64 et Debug x64 ? Par exemple, la propriété Optimisation est définie par défaut sur Augmenter la vitesse (/O2) dans une configuration Release, mais est désactivée dans la configuration Debug.

Vous pouvez toujours voir et changer la configuration et la plateforme auxquelles une valeur de propriété doit s’appliquer. L’illustration suivante montre les pages de propriétés ainsi que les contrôles d’informations de configuration et de plateforme en haut. Quand la propriété Optimisation est définie ici, elle s’applique uniquement aux builds Debug Win32, la configuration active, comme le montrent les flèches rouges.

Capture d’écran de la boîte de dialogue Pages de propriétés de Visual Studio.

La page est ouverte sur C/C++, Optimisation. Le paramètre Optimisation a la valeur Désactivée (/Od), qui est encadrée. Une flèche attire l’attention sur la relation entre le paramètre Configuration de la page de propriétés de projet, qui a la valeur Active(Debug), et le paramètre de la liste déroulante Configuration de la solution dans la barre d’outils, qui a la valeur Debug. Une autre flèche attire l’attention sur la relation entre le paramètre Plateforme de la page de propriétés de projet, qui a la valeur Active(Win32), et le paramètre de la liste déroulante Plateforme des solutions dans la barre d’outils, qui a la valeur x86.

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 d’un projet Visual Studio. La liste déroulante Configuration est mise en évidence, et a la valeur Mise en production. Le paramètre C/C++ > Optimisation > Optimisation a la valeur Augmenter la vitesse (/O2).

Plateformes cibles

Plateforme cible fait référence au genre d’appareil et de système d’exploitation sur lequel l’exécutable doit s’exécuter. Vous pouvez générer un projet pour plusieurs plateformes. Les plateformes cibles disponibles pour les projets C++ dépendent du genre de projet. Il s’agit, sans s’y limiter, des plateformes 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 le Gestionnaire de configuration n’a aucun effet sur les projets C++ natifs. Elle concerne uniquement les types de projets C++/CLI, et les autres types de projets .NET. Pour plus d’informations, consultez /CLRIMAGETYPE (Spécifier le type d’une 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 sont traduites directement en options de ligne de commande, qui sont passées au compilateur. Pour lire la documentation relative à une option spécifique, sélectionnez l’option correspondante dans le volet central, puis appuyez sur F1. Vous pouvez également parcourir la documentation de 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 montre uniquement les pages de propriétés pertinentes pour le projet actuel. Par exemple, si le projet n’a pas de fichier .idl, 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, par exemple les répertoires et les chemins d’accès include, appelés macros. Une macro peut faire référence à une valeur définie par Visual Studio, au système MSBuild, ou à une valeur définie par l’utilisateur. Les macros ressemblent à $(macro-name) ou %(item-macro-name). Elles sont exposées dans les pages de propriétés, où vous pouvez faire référence à celles-ci, et les modifier à l’aide de l’Éditeur de propriétés. Utilisez des macros à la place de valeurs codées en dur, par exemple les chemin d’accès de répertoires. Les macros facilitent le partage des paramètres de propriétés entre les machines et entre les versions de Visual Studio. De plus, vous pouvez mieux vérifier que les paramètres de votre 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ègle Répertoires VC++ est sélectionnée et le volet droit liste les propriétés associées à cette règle. Les valeurs de propriété sont souvent des macros, par exemple $(VC_SourcePath) :

Capture d’écran de la boîte de dialogue Pages de propriétés de Visual Studio pour les règles de divers répertoires.

La page Répertoires VC plus plus est ouverte, et comporte des propriétés pour les règles de répertoires VC++. Répertoires sources est un exemple de règle ayant la valeur $(VC_SourcePath). Il existe des règles pour les répertoires include, les répertoires de bibliothèques, les répertoires d’exécutables, etc.

Vous pouvez utiliser l’Éditeur de propriétés pour voir 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. Quand 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 C/C++ Définitions de préprocesseur 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 l’article Item Definitions (Définitions des éléments).

macros définies par l'utilisateur

Vous pouvez créer des macros définies par l’utilisateur à utiliser comme variables dans les générations 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 notation $(name) 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 décrites 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 du Gestionnaire de propriétés. (Dans la barre de menus, choisissez Afficher>Gestionnaire de propriétés ou Afficher>Autres fenêtres>Gestionnaire de propriétés.) Ouvrez le menu contextuel d’une feuille de propriétés (son nom finit par .user), puis 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. Vous pouvez aussi cocher la case Définir cette macro comme 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 choisir cette option afin d’afficher l’Éditeur de propriétés pour cette propriété.

Capture d’écran de la page de propriétés de projet Visual Studio pour les répertoires VC plus plus.

L’Éditeur de propriétés pour le paramètre Répertoires Include est ouvert. Il affiche la valeur évaluée pour les répertoires Include, à savoir C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\Include. Il affiche les deux valeurs héritées : $(VC_IncludePath) et $(WindowsSDK_IncludePath). Une case « Hériter des paramètres par défaut du parent ou du projet » est cochée.

Dans l’Éditeur de propriétés, vous pouvez choisir le bouton Macros pour voir 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. Quand la case Hériter des paramètres par défaut du parent ou du projet est cochée, et que vous ajoutez une nouvelle valeur, celle-ci est ajoutée à toutes les valeurs 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.

Capture d’écran de la boîte de dialogue Éditeur de propriétés après la sélection du bouton Macros.

L’Éditeur de propriétés pour Répertoires Include est ouvert. La valeur évaluée s’affiche avec les valeurs héritées. Une zone de liste contient diverses macros et leurs valeurs, par exemple $(CharacterSet), qui a la valeur Unicode.

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

Quand vous ajoutez un répertoire include à un projet, il est important de ne pas remplacer tous les répertoires par défaut. La méthode appropriée pour ajouter un répertoire consiste à ajouter le nouveau chemin d’accès, par exemple « C:\MyNewIncludeDir\ », puis à ajouter la macro $(IncludePath) à 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++ dans la boîte de dialogue Pages de propriétés) fournit un moyen rapide de parcourir et de rechercher 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 les variables d’environnement d’une build

Le compilateur MSVC (cl.exe) reconnaît certaines variables d’environnement, en particulier LIB, LIBPATH, PATH et INCLUDE. Quand vous effectuez une génération 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 les valeurs LIB, LIBPATH et 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. Le processus de génération ajoute ensuite la valeur de la propriété Répertoires exécutables située sous Répertoires VC++ au début de PATH. Vous pouvez spécifier une variable d’environnement définie par l’utilisateur en créant une macro définie par l’utilisateur, puis en cochant la case Définir cette macro en tant que variable d’environnement dans l’environnement de génération.

Définir les variables d’environnement d’une session de débogage

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

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

Contenu de cette section

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

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

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

Voir aussi

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