Utilizar $(Inherit) y $(NoInherit)
Actualización: noviembre 2007
En este tema se ofrecen ejemplos de uso de las macros $(Inherit) y $(NoInherit).
Defina la siguiente ruta de acceso de inclusión adicional (/I) en el nivel de proyecto:
c:\test
Defina la siguiente ruta de acceso de inclusión adicional para un archivo concreto:
c:\test2;c:\mystuff
Observe la página de propiedades Línea de comandos del archivo. que incluye:
/I"c:\test2" /I"c:\mystuff" /I"c:\test"
Esto se debe a que, si $(Inherit) no se incluye explícitamente en la lista, se incluirá implícitamente al final de las rutas de acceso de inclusión adicionales de la configuración del archivo.
Sin embargo, si cambia la ruta de acceso de inclusión adicional de la configuración del archivo a:
c:\test2;$(Inherit);c:\mystuff
se expandirá a lo siguiente en la página de propiedades Línea de comandos del archivo:
/I"c:\test2" /I"c:\test" /I"c:\mystuff"
Tenga en cuenta que la ruta de acceso de inclusión adicional de la configuración del proyecto es el lugar donde se encontraba la macro $(Inherit). La macro $(Inherit) se utiliza como guía para situar los valores heredados que forman parte de la propiedad. Puede estar en cualquier parte de la lista.
Si cambia la ruta de acceso de inclusión adicional de la configuración del archivo a:
$(Inherit);c:\test2;$(Inherit);c:\mystuff
se expandirá a lo siguiente en la página de propiedades Línea de comandos del archivo:
/I"c:\test" /I"c:\test2" /I"c:\test" /I"c:\mystuff"
Si cambia la ruta de acceso de inclusión adicional de la configuración del archivo a:
c:\test2;c:\mystuff;$(NoInherit)
se expandirá a lo siguiente en la página de propiedades Línea de comandos del archivo:
/I"c:\test2" /I"c:\mystuff"
Observe que el /I"c:\test" de la configuración del proyecto ha desaparecido. A diferencia de $(Inherit), que depende de la ubicación, la ubicación de la macro $(NoInherit) no tiene nada que ver con cómo se utilice.
$(NoInherit) tiene prioridad sobre $(Inherit). Siempre que $(NoInherit) esté presente, $(Inherit) se pasará por alto. Por ejemplo, si cambia la ruta de acceso de inclusión adicional de la configuración del archivo a:
c:\test2;$(Inherit);c:\mystuff;$(NoInherit)
se expandirá exactamente igual que si fuera:
c:\test2;c:\mystuff;$(NoInherit)
Tenga cuidado al utilizar $(NoInherit) en la propiedad Definiciones de herramientas como el compilador o el vinculador de C/C++: podría cancelar el uso de los valores predeterminados del proyecto (como los definidos por Uso de ATL y Uso de MFC).