Set compiler and build properties (Establecer las propiedades del compilador y la compilación)

En el entorno de desarrollo integrado, las propiedades exponen la información necesaria para compilar los proyectos. Esta información incluye el nombre de la aplicación, la extensión (por ejemplo, DLL, LIB, EXE), las opciones del compilador y del vinculador, la configuración del depurador, los pasos de compilación personalizada y muchas otras cosas. Normalmente, se usan las páginas de propiedades para ver y modificar estas propiedades. Para acceder a las páginas de propiedades, elija Proyecto>Nombre del proyecto Propiedades en el menú principal, o haga clic con el botón derecho en el nodo del proyecto en el Explorador de soluciones y elija Propiedades.

Propiedades predeterminadas

Al crear un proyecto, el sistema asigna valores a varias propiedades. Los valores predeterminados varían ligeramente según el tipo de proyecto y las opciones que se elijan en el Asistente para aplicaciones. Por ejemplo, un proyecto de ATL tiene propiedades relacionadas con los archivos MIDL, pero estas propiedades no están presentes en una aplicación de consola básica. Las propiedades predeterminadas se muestran en el panel General de las páginas de propiedades:

Captura de pantalla del cuadro de diálogo de propiedades del proyecto de Visual Studio.

La página General está abierta. La sección Valores predeterminados del proyecto está resaltada, lo que incluye que en Tipo de configuración se haya seleccionado Aplicación (.exe), en Uso de MFC se haya seleccionado Usar bibliotecas estándar de Windows, en Juego de caracteres se haya elegido Unicode, en Compatibilidad con Common Language Runtime se haya seleccionado No hay compatibilidad con Common Language Runtime, en Optimización del programa completo se haya seleccionado Sin optimización del programa completo y en Compatibilidad con aplicaciones de la Tienda Windows se haya seleccionado No.

Aplicación de propiedades a las configuraciones de compilación y las plataformas de destino

Algunas propiedades, como el nombre de la aplicación, se aplican a todas las variaciones de compilación y plataformas de destino, si es una compilación de depuración o versión. Pero la mayoría de las propiedades dependen de la configuración. Para generar el código correcto, el compilador no solo debe saber en qué plataforma concreta se ejecuta el programa, sino también qué opciones del compilador concretas se usan. Por tanto, cuando se establece una propiedad, es importante prestar atención a la configuración y plataforma a las que se debe aplicar el valor nuevo. ¿Se debe aplicar solo a las compilaciones Debug Win32 o también a Debug ARM64 y Debug ARM64? Por ejemplo, la propiedad Optimización se establece de forma predeterminada en Maximizar velocidad (/O2) en una configuración de versión, pero está deshabilitada en la configuración de depuración.

Siempre puede ver y cambiar la configuración y la plataforma a la que se debe aplicar un valor de propiedad. En la ilustración siguiente se muestran las páginas de propiedades con la información de los controles de la plataforma y de la configuración en la parte superior. Si se establece aquí la propiedad Optimization, solo se aplica a las compilaciones Debug de Win32, que es la configuración activa actualmente, como muestran las flechas de color rojo.

Captura de pantalla del cuadro de diálogo Páginas de propiedades de Visual Studio.

La página está abierta en C/C++, Optimización. En Optimización, se ha seleccionado Deshabilitado (/Od), que se llama. Una flecha llama a la relación entre el valor Configuración de la página de propiedades del proyecto, que se establece en Active(Debug) y el valor de la lista desplegable Configuración de la solución de la barra de herramientas, que se establece en Depurar. Otra flecha llama a la relación entre el valor Plataforma de la página de propiedades del proyecto, en el que está seleccionado Active(Win32) y el valor de la lista desplegable Plataforma de soluciones de la barra de herramientas, en el que se ha seleccionado x86.

En la ilustración siguiente se muestra la misma página de propiedades de proyecto, pero la configuración se ha cambiado a Release. Observe el valor diferente para la propiedad Optimización. Observe también que la configuración activa sigue siendo Debug. Aquí se pueden establecer propiedades para cualquier configuración; no tiene que ser la activa.

Captura de pantalla del cuadro de diálogo Páginas de propiedades del proyecto de Visual Studio. Se llama a la lista desplegable Configuración y se selecciona la opción Versión. En el valor >Optimización >Optimización de C/C++ se selecciona Maximizar velocidad (/O2).

Plataformas de destino

Plataforma de destino hace referencia al tipo de dispositivo o sistema operativo en que se va a ejecutar el archivo ejecutable. Un proyecto se puede compilar para más de una plataforma. Las plataformas de destino disponibles para los proyectos de C++ dependen del tipo de proyecto. Incluyen, pero no se limitan a Win32, x64, ARM, ARM64, Android e iOS. La plataforma de destino x86 que es posible que vea en el Administrador de configuración es idéntica a Win32 en los proyectos nativos de C++. Win32 significa Windows de 32 bits y x64 significa Windows de 64 bits. Para obtener más información sobre estas dos plataformas, vea Running 32-bit applications (Ejecución de aplicaciones de 32 bits).

El valor de plataforma de destino Cualquier CPU que es posible que vea en el Administrador de configuración no tiene ningún efecto en los proyectos nativos de C++. Solo es relevante para C++/CLI y otros tipos de proyecto de .NET. Para obtener más información, vea /CLRIMAGETYPE (Especificar tipo de imagen CLR).

Para obtener más información acerca de la configuración de propiedades de una compilación de depuración, vea:

Opciones del compilador y el enlazador de C++

Las opciones del compilador y el enlazador de C++ se encuentran en los nodos de C/C++ y Enlazador del panel izquierdo en Propiedades de configuración. Estas opciones se trasladan directamente a las opciones de la línea de comandos que se pasan al compilador. Para leer la documentación sobre una opción específica, seleccione la opción en el panel central y presione F1. También se puede examinar la documentación de todas las opciones en Opciones del compilador de MSVC y Opciones del enlazador de MSVC.

En el cuadro de diálogo Páginas de propiedades solo se muestran las páginas de propiedades que son relevantes para el proyecto actual. Por ejemplo, si el proyecto no tiene un archivo .idl, la página de propiedades de MIDL no se muestra. Para obtener más información sobre la configuración de las páginas de propiedades, consulte Páginas de propiedades (C++).

Valores de directorio y de ruta de acceso

MSBuild admite el uso de constantes en tiempo de compilación para determinados valores de cadena, como directorios y las rutas de acceso, llamadas macros. Una macro puede hacer referencia a un valor que se define por Visual Studio o el sistema MSBuild, o un valor definido por el usuario. Las macros parecen $(macro-name) o %(item-macro-name). Estos se exponen en las páginas de propiedades, donde se pueden consultar y modificar con el Editor de propiedades. Use macros en lugar de valores codificados de forma rígida, como rutas de acceso de directorio. Las macros facilitan el uso compartido de la configuración de propiedades entre máquinas y entre versiones de Visual Studio. Además, puede asegurarse de que la configuración del proyecto participe correctamente en la herencia de propiedades.

La ilustración siguiente muestra las páginas de propiedades de un proyecto de Visual Studio C++. En el panel de la izquierda, está seleccionada la reglaDirectorios VC++ y en el de la derecha se muestran las propiedades asociadas a esa regla. Los valores de propiedad suelen ser macros, como $(VC_SourcePath):

Captura de pantalla del cuadro de diálogo Páginas de propiedades de Visual Studio con las reglas de varios directorios.

La página Directorios de VC++ está abierta y tiene propiedades para las reglas de Directorios de VC++. Una regla de ejemplo es Directorios de origen, que se establece en $(VC_SourcePath). Hay reglas para directorios de inclusión, directorios de biblioteca, directorios de ejecutables, etc.

Se puede usar el Editor de propiedades para ver los valores de todas las macros disponibles.

Macros predefinidas

  • Macros globales
    Las macros globales se aplican a todos los elementos de una configuración del proyecto. Una macro global tiene la sintaxis $(name). Un ejemplo de una macro global es $(VCInstallDir), que almacena el directorio raíz de la instalación de Visual Studio. Una macro global corresponde a PropertyGroup en MSBuild.

  • Macros de elemento
    Las macros de elemento tienen la sintaxis %(name). Para un archivo, una macro de elemento solo se aplica a ese archivo; por ejemplo, puede utilizar %(AdditionalIncludeDirectories) para especificar directorios de inclusión que solo se aplican a un archivo determinado. Esta clase de macro de elemento corresponde a metadatos ItemGroup en MSBuild. Cuando se utiliza en el contexto de la configuración de un proyecto, se aplica una macro de elemento a todos los archivos de un tipo determinado. Por ejemplo, la propiedad de configuración Definiciones de preprocesador de C/C++ puede tomar una macro de elemento %(PreprocessorDefinitions) que se aplica a todos los archivos .cpp del proyecto. Esta clase de macro de elemento corresponde a metadatos ItemDefinitionGroup en MSBuild. Para obtener más información, consulte Definiciones de elementos.

Macros definidas por el usuario

Se pueden crear macros definidas por el usuario para usarlas como variables en compilaciones de proyectos. Por ejemplo, puede crear una macro definida por el usuario que proporcione un valor a un paso de compilación personalizada o a una herramienta de compilación personalizada. Una macro definida por el usuario es un par de nombre y valor. En un archivo de proyecto, use la notación $(name) para obtener acceso al valor.

La macro definida por el usuario se almacena en una hoja de propiedades. Si el proyecto todavía no contiene una hoja de propiedades, puede crear una siguiendo los pasos descritos en Uso compartido o reutilización de la configuración del proyecto de Visual Studio.

Para crear una macro definida por el usuario

  1. Abra la ventana del Administrador de propiedades. (En la barra de menús, elija Ver>Administrador de propiedades o Ver>Otras ventanas>Administrador de propiedades). Abra el menú contextual de una hoja de propiedades (su nombre termina en .user .user) y luego elija Propiedades. Se abre el cuadro de diálogo Páginas de propiedades de esa hoja de propiedades.

  2. En el panel de la izquierda del cuadro de diálogo, seleccione Macros de usuario. En el panel de la derecha, haga clic en el botón Agregar macro para abrir el cuadro de diálogo Agregar macro de usuario.

  3. En el cuadro de diálogo, especifique un nombre y un valor para la macro. Opcionalmente, active la casilla Establecer esta macro como variable de entorno en el entorno de compilación.

Editor de propiedades

Puede utilizar el editor de propiedades para modificar determinadas propiedades de cadena y seleccionar macros como valores. Para tener acceso al editor de propiedades, seleccione una propiedad en una página de propiedades y elija el botón de flecha abajo de la derecha. Si la lista desplegable contiene <Editar>, podrá decidir si quiere que muestre el Editor de propiedades para esa propiedad.

Captura de pantalla de la página de propiedades del proyecto de Visual Studio para Directorios de VC++.

El Editor de propiedades del valor Directorios de inclusión está abierto. Muestra el valor evaluado de Directorios de inclusión, que es C:\Archivos de programa(x86)\Microsoft Visual Studio 14.0\VC\Include. Muestra los dos valores heredados: $(VC_IncludePath) y $(WindowsSDK_IncludePath). Está seleccionada la casilla "Heredar de los valores predeterminados principales o del proyecto".

En el Editor de propiedades, puede hacer clic en el botón Macros para ver las macros disponibles y sus valores actuales. En la ilustración siguiente se muestra el Editor de propiedades para la propiedad Directorios de inclusión adicionales después de haber hecho clic en el botón Macros. Cuando se activa la casilla Heredar de primario o valores pred. del proyecto y se agrega un valor nuevo, se anexa a cualquier valor que se está heredando actualmente. Si desactiva la casilla, el nuevo valor reemplaza los valores heredados. En la mayoría de los casos, deje la casilla activada.

Captura de pantalla del cuadro de diálogo Editor de propiedades después de seleccionar el botón Macros.

El editor de propiedades de Directorios de inclusión está abierto. El valor evaluado se muestra junto con los valores heredados. Un cuadro de lista contiene varias macros y sus valores, como $(CharacterSet), que se establece en Unicode.

Incorporación de un directorio de inclusión al conjunto de directorios predeterminados

Cuando agrega un directorio de inclusión a un proyecto, es importante no invalidar todos los directorios predeterminados. La forma correcta de agregar un directorio es anexar la ruta de acceso nueva, por ejemplo "C:\MyNewIncludeDir\", y luego anexar la macro $(IncludePath) al valor de propiedad.

Examen y búsqueda rápida de todas las propiedades

La página de propiedades Todas las opciones (en el nodo Propiedades de configuración>C/C++ del cuadro de diálogo Páginas de propiedades) proporciona una forma rápida de examinar y buscar las propiedades disponibles en el contexto actual. Tiene un cuadro de búsqueda especial y una sintaxis simple para ayudarle a filtrar los resultados:

Ningún prefijo:
Busque solo en los nombres de propiedad (subcadena sin distinción entre mayúsculas y minúsculas).

"/" o "-":
Buscar solo en modificadores de compilador (prefijo sin distinción entre mayúsculas y minúsculas)

v:
Busque solo en los valores (subcadena sin distinción entre mayúsculas y minúsculas).

Establecimiento de variables de entorno para una compilación

El compilador de MSVC (cl.exe) reconoce determinadas variables de entorno, en concreto LIB, LIBPATH, PATH y INCLUDE. Al compilar con el IDE, las propiedades establecidas en la página de propiedades Directorios de VC++ se usan para establecer esas variables de entorno. Si los valores LIB, LIBPATH y INCLUDE se han definido, por ejemplo mediante el Símbolo del sistema para desarrolladores, estos se reemplazarán por los valores de las propiedades de MSBuild correspondientes. La compilación después antepone el valor de la propiedad de directorios ejecutable de los directorios VC++ en PATH. Puede establecer una variable de entorno definida por el usuario si crea una macro definida por el usuario y activa la casilla Establecer esta macro como variable de entorno en el entorno de compilación.

Establecimiento de variables de entorno para una sesión de depuración

En el panel de la izquierda del cuadro de diálogo Páginas de propiedades del proyecto, expanda Propiedades de configuración y, después, seleccione Depuración.

En el panel de la derecha, modifique las opciones Entorno o Combinar entorno, y después haga clic en el botón Aceptar.

En esta sección

Uso compartido o reutilización de la configuración del proyecto de Visual Studio
Procedimientos para crear un archivo .props con la configuración de compilación personalizada que se puede compartir o reutilizar.

Herencia de propiedades de proyecto
Describe el orden de evaluación de los archivos .props, .targets, .vcxproj, así como las variables de entorno, en el proceso de compilación.

Modificación de las propiedades y los destinos sin cambiar el archivo de proyecto
Procedimientos para crear una configuración de compilación temporal sin necesidad de modificar un archivo del proyecto.

Consulte también

Proyectos de Visual Studio: C++
Estructura de los archivos .vcxproj y .props.
Archivos XML de página de propiedades