属性类型 (C++)
更新:2007 年 11 月
项目系统将属性区分为两种类型:简单属性和聚合属性。每种属性针对属性继承的计算方式都不同。
简单属性
简单属性全都是非字符串属性(如整数、布尔值及枚举属性),并且只包含单个值。如果在本地级别(此文件配置、此配置或此属性表)定义这些属性,则将忽略继承的值。WarnAsError 就是这样的属性,该属性设置 CL.EXE 的 /WX 开关。
聚合属性
聚合属性始终是字符串属性。在任何级别定义的聚合属性的值都与其父级的值相串联。AdditionalIncludeDirectories 就是聚合属性,该属性设置 CL.EXE 的 /I 开关。路径属性是聚合属性的一个很好的示例,因为它们由多个值的列表组成,而不是由单个值组成。
有三个特殊的内置宏控制聚合属性的属性计算:
$(Inherit)
指定计算父级的属性值,并将这些值插入到宏所在的位置。如果未在任何位置指定 $(Inherit),则暗示在值的结尾处,而这意味着父级的值将被追加到当前级别的值中。$(NoInherit)
指定不要将父级的属性值追加到聚合属性中。$(NoInherit) 宏将重写 $(Inherit) 宏。$(StopEvaluating)
指定在遇到该宏的情况下停止对特定聚合属性的所有计算。$(StopEvaluating) 宏后的所有值都将丢失。