Types de propriétés (C++)
Le système de projet distingue les propriétés en deux types : propriétés simples et propriétés d'agrégat.Chaque type de propriété est évalué différemment vis-à-vis de l'héritage de propriété.
Propriétés simples
Les propriétés simples sont toutes des propriétés qui ne sont pas des chaînes, comme des propriétés entières, booléennes et enum, et ne peuvent contenir qu'une seule valeur.Si elles sont définies au niveau local (cette configuration de fichier, cette configuration ou cette feuille de propriétés), la valeur héritée est alors ignorée.Un exemple d'une propriété de ce type est la propriété WarnAsError, qui définit le commutateur /WX pour CL.EXE.
Propriétés d'agrégat
Les propriétés d'agrégat sont toujours des propriétés de type chaîne.La valeur d'une propriété d'agrégat, définie à quelque niveau que ce soit, est concaténée avec la valeur de son parent.Un exemple d'une propriété globale est le AdditionalIncludeDirectories qui définit le commutateur /I pour CL.EXE.Les propriétés de chemin d'accès sont des bons exemples de propriétés globales parce qu'elles comprennent une liste de plusieurs valeurs, plutôt qu'une valeur unique.
Trois macros intégrées spéciales contrôlent l'évaluation de propriété pour les propriétés d'agrégat :
$(Inherit)
Spécifie d'évaluer les valeurs de propriété du parent et insère ces valeurs à la place de la macro.Lorsque $(Inherit) n'est spécifié nulle part, il est implicitement à la fin de la valeur, ce qui signifie que les valeurs du parent seront ajoutées à la valeur au niveau actuel.$(NoInherit)
Spécifie de ne pas ajouter les valeurs de propriété du parent à la propriété d'agrégat.La macro $(NoInherit) substitue la macro $(Inherit).$(StopEvaluating)
Spécifie d'arrêter toute l'évaluation sur la propriété d'agrégat particulière où la macro a été rencontrée.Toute valeur située après la macro $(StopEvaluating) est perdue.