Utilisation des propriétés de projet

Dans l'environnement IDE, toutes les options du compilateur, options de l'éditeur de liens, paramètres du débogueur et étapes de génération personnalisées sont exposés comme des propriétés.Vous utilisez les pages de propriétés d'un projet pour afficher et modifier ses propriétés.Vous pouvez appliquer des propriétés de projet à toute combinaison de configuration de build (Debug ou Release) et de la plateforme cible (Win32, x64 ou ARM).Vous pouvez également définir des propriétés pour les fichiers individuels d'un projet.

Nous ne recommandons plus de définir les propriétés « globales » sur la base de chaque utilisateur et de chaque ordinateur.Au lieu de cela, nous vous recommandons d'utiliser le Gestionnaire de propriétés pour créer une feuille de propriétés afin de stocker les paramètres de chaque genre de projet que vous souhaitez pouvoir réutiliser ou partager avec d'autres personnes.Avec les feuilles de propriétés, il est également moins probable que les paramètres de propriétés pour d'autres types de projets soient modifiés par inadvertance.Les feuilles de propriétés sont présentées plus en détail plus loin dans cet article.

Pour afficher le Gestionnaire de propriétés, dans la barre de menus, sélectionnez Affichage, Autres fenêtres, Gestionnaire de propriétés.

Le système de projet Visual C++ est basé sur MSBuild.Bien que vous puissiez modifier les fichiers de projet XML et les feuilles de propriétés directement sur la ligne de commande, nous vous recommandons d'utiliser l'environnement IDE, surtout lorsque vous modifiez des propriétés qui participent à l'héritage.Un fichier modifié manuellement qui est valide dans MSBuild n'est pas nécessairement lisible par le système de projet Visual C++ et vous pouvez introduire des erreurs imperceptibles dans votre processus de génération.

Un fichier projet est un fichier XML dont l'extension de nom de fichier est .vcxproj.Toutes les propriétés que vous définissez dans l'environnement IDE sont écrites directement dans le fichier projet ou dans les feuilles de propriétés qui sont importées au moment de la génération.

L'illustration suivante montre les pages de propriétés d'un projet Visual C++.Notez que dans le volet gauche, la règleRépertoires VC++ est sélectionnée, et que dans le volet droit les propriétés associées à cette règle sont affichées. (Les valeurs de $(...) sont des macros, qui sont décrites ultérieurement dans cet article.) Répertoires VC++ est une propriété de configuration et ses valeurs peuvent être différentes pour plusieurs configurations, par exemple Debug et Release.Vous pouvez utiliser les zones de liste Configuration et Plateforme en haut de la boîte de dialogue pour définir les configurations auxquelles les propriétés s'appliquent. Dans de nombreux cas, Toutes les plateformes et Toutes les configurations sont le choix recommandé.Les paramètres dans la règle Propriétés communes s'appliquent à toutes les configurations.

Pages de propriétés du projet

Définition des propriétés d'un projet

En général, voici comment définir les propriétés d'un projet :

Pour définir une propriété pour un projet

  1. Dans la barre de menus, choisissez Projet, Propriétés.Dans l'Explorateur de solutions ou le Gestionnaire de propriétés, ouvrez le menu contextuel du projet et choisissez Propriétés.La boîte de dialogue Pages de propriétés s'ouvre.

  2. Dans les zones en haut de la boîte de dialogue, sélectionnez les configurations et plateformes auxquelles vous souhaitez appliquer le paramètre.

    Pour créer ou modifier les configurations qui s'affichent dans la zone Configuration, sélectionnez le bouton Gestionnaire de configurations.

  3. Définir la valeur de la propriété.Lorsque vous sélectionnez le bouton OK, la nouvelle valeur est écrite dans le fichier projet.

[!REMARQUE]

La boîte de dialogue Pages de propriétés affiche uniquement les pages de propriétés qui s'appliquent au projet actuel.Par exemple, si le projet n'a pas de fichier .idl, la page de propriétés MIDL n'est pas affichée.

Informations supplémentaires concernant les propriétés de la boîte de dialogue Pages de propriétés :

ConseilConseil

Vous pouvez ouvrir une page de propriétés directement en tapant son nom dans la fenêtre Lancement rapide.

Comparaison des propriétés codées en dur et des macros

Certaines propriétés de projet peuvent prendre comme valeur une référence à une propriété définie ailleurs.Ce type de valeur porte le nom de macro pour le différencier des autres types de paramètres de propriétés du projet.Une macro peut faire référence à une propriété définie par le système MSBuild ou à une propriété que vous avez définie vous-même.L'utilisation de macros au lieu de valeurs codées en dur telles que les chemins d'accès aux répertoires permet de partager facilement des paramètres de propriétés entre les ordinateurs et entre les versions de Visual Studio et de mieux s'assurer que les paramètres de projet participent correctement à l'héritage de propriété.

  • macros globales
    S'applique à tous les éléments dans une configuration de projet.Possède 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
    Possède 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 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 Définitions d'éléments.

Vous pouvez utiliser des macros pour définir des valeurs de propriété et vous pouvez utiliser l'éditeur de propriétés pour afficher les valeurs des macros disponibles.

É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 pour cette propriété.

Menu déroulant é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 paramètres par défaut du parent ou du projet est activée et que vous ajoutez une nouvelle valeur, celle-ci est ajoutée aux 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.

Éditeur de propriétés, Visual C++

Partage des configurations de propriétés réutilisables

Si vous avez un ensemble de propriétés commun fréquemment utilisé à appliquer à plusieurs projets, vous pouvez utiliser le Gestionnaire de propriétés pour les capturer dans un fichier de feuilles de propriétés réutilisable, qui par convention a une extension de nom de fichier .props.Vous pouvez appliquer la feuille (ou les feuilles) à de nouveaux projets afin de ne pas avoir à définir intégralement ses propriétés.Pour accéder au Gestionnaire de propriétés, dans la barre de menus, sélectionnez Afficher, Gestionnaire de propriétés.

Si vous choisissez Ajouter une nouvelle feuille de propriétés, puis que vous sélectionnez, par exemple, la feuille de propriétés MyProps.props, une boîte de dialogue Page de propriétés apparaît.Remarquez qu'elle s'applique à la feuille de propriétés MyProps ; toutes les modifications que vous apportez sont écrites dans la feuille, et non dans le fichier projet (.vcxproj).

Les propriétés dans une feuille de propriétés sont remplacées si la même propriété est définie directement dans le fichier .vcxproj.

Vous pouvez importer une feuille de propriétés aussi souvent que nécessaire.Plusieurs projets d'une solution peuvent hériter des paramètres de la feuille de propriétés et un projet peut avoir plusieurs feuilles.Une feuille de propriétés peut hériter elle-même des paramètres d'une autre feuille de propriétés.

Important

Un fichier .props par défaut ne participe pas au contrôle de code source car il n'est pas créé en tant qu'élément de projet.Vous pouvez ajouter manuellement le fichier comme élément de solution si vous souhaitez l'inclure dans le contrôle de code source.

Pour créer une feuille de propriétés

  1. Dans la barre de menus, sélectionnez Affichage, Gestionnaire de propriétés.Le Gestionnaire de propriétés s'ouvre.

  2. Pour définir la portée de la feuille de propriétés, sélectionnez l'élément auquel elle s'applique.Il peut s'agir d'une configuration particulière ou d'une autre feuille de propriétés.Ouvrez le menu contextuel de cet élément, puis choisissez Ajouter une nouvelle feuille de propriétés de projet.Spécifiez un nom et un emplacement.

  3. Dans Gestionnaire de propriétés, ouvrez la nouvelle feuille de propriétés et définissez les propriétés que vous souhaitez inclure.

Héritage de propriété

Les propriétés de projet sont superposées.Chaque couche hérite des valeurs de la couche précédente, mais une valeur héritée peut être substituée en définissant la propriété explicitement.Voici l'arborescence d'héritage de base :

  1. Paramètres par défaut de l'ensemble d'outils MSBuild CPP (..\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props, qui est importé par le fichier .vcxproj.)

  2. Feuilles de propriétés

  3. Fichier .vcxproj. (peut substituer les paramètres par défaut et les paramètres de feuille de propriétés.)

  4. Métadonnées d'élément

ConseilConseil

Sur une page de propriétés, une propriété dans bold est définie dans le contexte actuel.Une propriété en police normale est héritée.

Un fichier projet (.vcxproj) importe d'autres feuilles de propriétés au moment de la génération.Une fois toutes les feuilles de propriétés importées, le fichier projet est évalué et la dernière définition d'une valeur de propriété est celle qui est utilisée.Il est parfois utile d'afficher le fichier développé pour déterminer comment une valeur de propriété donnée est héritée.Pour afficher la version développée, entrez la commande suivante à une invite de commandes Visual Studio. (Remplacez les espaces réservés par les noms de fichiers que vous souhaitez utiliser.)

msbuild /pp:temp.txtmyapp**.vcxproj**

Les fichiers projet développés peuvent être volumineux et difficiles à comprendre si MSBuild ne vous est pas familier.Voici la structure de base d'un fichier projet :

  1. Propriétés de projet fondamentales, qui ne sont pas exposées dans l'environnement IDE.

  2. Importation de Microsoft.cpp.default.props, qui définit des propriétés de base et indépendantes des ensembles d'outils.

  3. Propriétés de configuration globales (exposées en tant que propriétés par défaut PlatformToolset et Project sur la page Configuration générale.Ces propriétés déterminent l'ensemble d'outils et les feuilles de propriétés intrinsèques importés dans Microsoft.cpp.props à l'étape suivante.

  4. Importation de Microsoft.cpp.props, qui définit la plupart des paramètres par défaut du projet.

  5. Importation de toutes les feuilles de propriétés, y compris les fichiers .user.Ces feuilles de propriétés peuvent tout remplacer, sauf les propriétés par défaut PlatformToolset et Project.

  6. Les propriétés restantes de la configuration du projet.Ces valeurs peuvent remplacer celles définies dans les feuilles de propriétés.

  7. Éléments (fichiers) avec leurs métadonnées.Il s'agit toujours du dernier mot dans les règles d'évaluation MSBuild, même s'ils se produisent avant d'autres propriétés et importations.

Pour plus d'informations, consultez Propriétés MSBuild.

Les fichiers .user et pourquoi ils sont problématiques

Les versions précédentes de Visual Studio utilisaient des feuilles de propriétés globales qui avaient une extension de nom de fichier .user et se trouvaient dans le dossier <profil_utilisateur>\AppData\Local\Microsoft\MSBuild\v4.0\.Nous ne recommandons plus l'utilisation de ces fichiers, car ils définissent des propriétés pour les configurations de projet sur la base de chaque utilisateur et de chaque ordinateur.Ces paramètres « globaux » peuvent perturber les builds, surtout lorsque vous ciblez plusieurs plateformes sur votre ordinateur de build.Par exemple, si vous avez un projet MFC et un projet Windows Phone, les propriétés .user seraient non valides pour l'un d'eux.Les feuilles de propriétés réutilisables sont plus flexibles et plus fiables.

Bien que les fichiers .user soient toujours installés par Visual Studio et participent à l'héritage des propriétés, ils sont vides par défaut.La meilleure pratique consiste à supprimer la référence correspondante dans le Gestionnaire de propriétés pour s'assurer que vos projets fonctionnent indépendamment des paramètres par utilisateur et par ordinateur. Cela est important pour garantir un comportement correct dans un environnement de contrôle de code source (SCC).

Ajout d'un répertoire Include au jeu de 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 méthode correcte pour ajouter un répertoire consiste à ajouter le nouveau chemin, par exemple « C:\MyNewIncludeDir\ », puis à ajouter la macro $(IncludePath) à la valeur de propriété.

Création d'une macro définie 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éez une en suivant les étapes définies précédemment dans cet article.

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

  1. Dans la fenêtre Gestionnaire de propriétés (dans la barre de menus, sélectionnez Affichage, Gestionnaire de propriétés), ouvrez le menu contextuel d'une feuille de propriétés (son nom se termine par .user), puis sélectionnez 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, cliquez sur Ajouter une macro pour afficher 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.

Définition des variables d'environnement pour une génération

Le compilateur Visual C++ (cl.exe) reconnaît certaines variables d'environnement, plus spécifiquement LIB, LIBPATH, PATH et INCLUDE.Lorsque vous effectuez une génération avec l'environnement IDE, les propriétés définies dans la page de propriétés Page de propriétés 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.La génération ajoute ensuite la valeur de la propriété de répertoires d'exécutables Répertoires 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 et en activant la case à cocher Définir cette macro en tant que variable d'environnement dans l'environnement de génération.

Définition 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 le nœud Propriétés de configuration et sélectionnez Débogage.

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

Affichage de toutes les macros et de leurs valeurs

Dans la boîte de dialogue Pages de propriétés d'un projet, sélectionnez une propriété de type chaîne telle que Répertoires VC++, choisissez la flèche vers le bas dans la colonne de droite, puis choisissez <Modifier> pour ouvrir l'Éditeur de propriétés.Dans l'Éditeur de propriétés, sélectionnez le bouton Macros.

Définition des propriétés de plusieurs configurations simultanément

Pour définir des propriétés pour toutes les configurations, dans les zones en haut de la boîte de dialogue Pages de propriétés d'un projet, sélectionnez Toutes les configurations et Toutes les plateformes, puis définissez les propriétés de votre choix.

Pour définir des propriétés pour certaines configurations, sélectionnez-les dans le Gestionnaire de propriétés, puis ouvrez le menu contextuel et sélectionnez Propriétés.Les paramètres que vous modifiez sont appliqués à chaque configuration que vous avez sélectionnée.

Vous pouvez également créer une feuille de propriétés pour plusieurs configurations.Pour cela, créez une feuille de propriétés pour chaque configuration, ouvrez le menu contextuel associé à l'une d'elles, sélectionnez Ajouter une feuille de propriétés existante, puis ajoutez les autres feuilles.Toutefois, si vous utilisez une feuille de propriétés commune, sachez que lorsque vous définissez une propriété, elle est définie pour toutes les configurations auxquelles la feuille s'applique et l'environnement IDE n'indique pas quels projets ou autres feuilles de propriétés héritent d'une feuille de propriétés donnée.

Dans les grandes solutions qui auront de nombreux projets, il peut être utile de créer une feuille de propriétés au niveau de la solution.Lorsque vous ajoutez un projet à la solution, utilisez le Gestionnaire de propriétés pour ajouter cette feuille de propriétés au projet.Si nécessaire au niveau du projet, vous pouvez ajouter une nouvelle feuille de propriétés pour définir des valeurs spécifiques au projet.

Pour parcourir et rechercher rapidement toutes les options

La page de propriétés Toutes les options (sous le nœud C/C++ dans le volet gauche de la boîte de dialogue Pages de propriétés ) offre un mode de navigation rapide et recherche 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).

Voir aussi

Autres ressources

Création et gestion de projets Visual C++