Tipi di proprietà (C++)
Le proprietà esistenti sono di due tipi: poprietà semplici e proprietà di aggregazione.I tipi di proprietà vengono valutati in modo diverso riguardo l'ereditarietà.
Proprietà semplici
Si tratta di proprietà non di tipo stringa, quali proprietà integer, boolean ed enum, che contengono un unico valore.Se le proprietà vengono definite a livello locale, ad esempio in questa configurazione file, configurazione o finestra delle proprietà, allora il valore ereditato viene ignorato.Un esempio di questo tipo di proprietà è WarnAsError, che imposta l'opzione /WX per CL.EXE.
Proprietà di aggregazione
Le proprietà di aggregazione sono sempre proprietà di tipo stringa.Il valore di tali proprietà, definite a qualsiasi livello, è concatenato con il valore dell'elemento padre.AdditionalIncludeDirectories è un esempio di proprietà di aggregazione che imposta l'opzione /I per CL.EXE.Le proprietà Path sono ottimi esempi di proprietà di aggregazione poiché comprendono un elenco di valori anziché un unico valore.
La valutazione delle proprietà di aggregazione viene effettuata grazie a tre speciali macro incorporate:
$(Inherit)
Specifica di valutare i valori di proprietà dell'elemento padre e di inserire tali valori al posto della macro.Quando $(Inherit) non è specificato, è implicito che si trova alla fine del valore, il che significa che i valori dell'elemento padre saranno accodati al valore del livello corrente.$(NoInherit)
Specifica di non accodare i valori di proprietà dell'elemento padre alla proprietà di aggregazione.La macro $(NoInherit) esegue l'override della macro $(Inherit).$(StopEvaluating)
Specifica di interrompere qualsiasi valutazione della proprietà di aggregazione per la quale viene trovata la macro.Tutti i valori dopo la macro $(StopEvaluating) saranno persi.