Configuración de un proyecto de C++ de MSBuild para Linux en Visual Studio
La compatibilidad con Linux está disponible en Visual Studio 2017 y versiones posteriores.
En este tema se describe cómo configurar un proyecto para Linux basado en MSBuild según se explica en Creación de un proyecto de C++ de MSBuild para Linux en Visual Studio. Para más información sobre los proyectos de CMake de Linux, consulte Configuración de un proyecto de CMake de Linux.
Puede configurar un proyecto de Linux que tenga como destino un equipo físico de Linux, una máquina virtual o el subsistema Windows para Linux (WSL).
Visual Studio 2019 versión 16.1 y posteriores:
Cuando el destino es WSL, puede evitar las operaciones de copia necesarias para compilar y obtener IntelliSense que se necesitan cuando el destino es un sistema Linux remoto.
Puede especificar destinos de Linux independientes para la compilación y depuración.
Configuración general
Para ver las opciones de configuración, seleccione el menú Proyecto > Propiedades o haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Propiedades en el menú contextual. Aparecerá la configuración General.
De forma predeterminada, se crea un archivo ejecutable (.out). Para compilar una biblioteca estática o dinámica, o para usar un archivo Make existente, emplee la opción Tipo de configuración.
Si está compilando para Subsistema de Windows para Linux (WSL), la versión 1 de WSL está limitada a 64 procesos de compilación paralelos. Esto se controla mediante el valor Máximo de trabajos de compilación en paralelo de Propiedades de configuración > C/C++ > General.
Independientemente de la versión de WSL que esté usando, si tiene previsto usar más de 64 procesos de compilación paralelos, se recomienda compilar con Ninja, que normalmente es más rápido y confiable. Para compilar con Ninja, use el valor Habilitar compilación incremental de Propiedades de configuración > General.
Para obtener más información sobre la configuración de las páginas de propiedades, vea Referencia de las páginas de propiedades de un proyecto de Linux.
Configuración remota
Para cambiar la configuración relacionada con el equipo Linux remoto, configure las opciones remotas que aparecen en General.
Para especificar un equipo Linux de destino remoto, use la entrada Máquina de compilación remota. Esto le permitirá seleccionar una de las conexiones creadas anteriormente. Para crear una entrada, vea la sección Conexión al equipo Linux remoto.
Visual Studio 2019 versión 16.7 y posteriores: para que el destino sea el Subsistema de Windows para Linux (WSL), establezca la lista desplegable Conjunto de herramientas de la plataforma en GCC for Windows Subsystem for Linux (GCC para el Subsistema de Windows para Linux). Las otras opciones remotas desaparecerán y se mostrará en su lugar la ruta de acceso al shell de WSL predeterminado:
Si tiene instalaciones de WSL en paralelo, aquí puede especificar una ruta de acceso distinta. Para obtener más información sobre cómo administrar varias distribuciones, consulte Manage and configure Windows Subsystem for Linux (Administrar y configurar el subsistema de Windows para Linux).
Puede especificar otro destino de depuración en la página Propiedades de configuración>Depuración.
El Directorio raíz de la compilación remota determina la ubicación raíz donde se crea el proyecto en el equipo Linux remoto. El valor predeterminado es ~/projects, a menos que se cambie.
El Directorio del proyecto de compilación remota es donde se creará este proyecto concreto en el equipo remoto Linux. El valor predeterminado es $(RemoteRootDir)/$(ProjectName) , que se expandirá en un directorio con el nombre del proyecto actual, bajo el directorio raíz establecido arriba.
Nota
Para cambiar el valor predeterminado de los compiladores de C y C++, o el enlazador y el archivador usados para compilar el proyecto, use las entradas adecuadas de la sección C/C++ > General y en la sección Enlazador > General. Puede especificar una versión determinada de GCC o Clang, por ejemplo. Para obtener más información, vea Propiedades de C o C++ (C++ para Linux) y Propiedades del enlazador (C++ para Linux).
Copiar orígenes (solo sistemas remotos)
Nota
Esta sección no es válida si el destino es WSL.
Al compilar en sistemas remotos, los archivos de origen del equipo de desarrollo se copian en el equipo Linux y se compilan allí. De forma predeterminada, se copian todos los orígenes del proyecto de Visual Studio en las ubicaciones establecidas en la configuración anterior. Pero también pueden agregarse a la lista orígenes adicionales o se puede desactivar por completo la copia de orígenes, que es el valor predeterminado para un proyecto de archivos Make.
Orígenes para copiar determina qué orígenes se copian en el equipo remoto. De forma predeterminada, @(SourcesToCopyRemotely) usa el valor predeterminado de todos los archivos de código fuente en el proyecto, pero no incluye ningún archivo de recursos, como imágenes.
Copiar orígenes puede activarse y desactivarse para habilitar y deshabilitar la copia de archivos de origen en el equipo remoto.
Orígenes adicionales para copiar permite agregar más archivos de origen, que se copiarán en el sistema remoto. Puede especificar una lista delimitada por punto y coma o puede usar la sintaxis := para especificar un nombre local y remoto para usar:
C:\Projects\ConsoleApplication1\MyFile.cpp:=~/projects/ConsoleApplication1/ADifferentName.cpp;C:\Projects\ConsoleApplication1\MyFile2.cpp:=~/projects/ConsoleApplication1/ADifferentName2.cpp;
Eventos de compilación
Dado que toda la compilación se produce en un equipo remoto (o en WSL), se han agregado varios eventos de compilación más a la sección Eventos de compilación de las propiedades del proyecto. Estos son Evento remoto anterior a la compilación, Evento remoto anterior a la vinculación y Evento remoto posterior a la compilación, y se producirán en el equipo remoto antes o después de los pasos individuales del proceso.
IntelliSense para encabezados en sistemas remotos
Cuando se agrega una conexión nueva en Connection Manager, Visual Studio detecta automáticamente los directorios de inclusión para el compilador en el sistema remoto. Luego, Visual Studio comprime y copia esos archivos en un directorio en el equipo Windows local. Después de eso, cuando se use esa conexión en un proyecto de Visual Studio o CMake, se usan los encabezados de esos directorios para proporcionar IntelliSense.
Nota
En la versión 16.5 de Visual Studio 2019 y versiones posteriores se ha optimizado la copia remota de encabezados. Ahora, los encabezados se copian a petición al abrir un proyecto de Linux o configurar CMake para un destino de Linux. La copia se produce en segundo plano en función de cada proyecto, según los compiladores especificados del proyecto en cuestión. Para obtener más información, vea Mejoras en la precisión y el rendimiento de IntelliSense en Linux.
Esta funcionalidad depende de que el equipo Linux tenga instalado zip. Puede instalar zip mediante este comando apt-get:
sudo apt install zip
Para administrar la caché de encabezados, vaya a Herramientas > Opciones, multiplataforma > Administrador de conexiones > Administrador de IntelliSense de encabezados remotos. Para actualizar la caché de encabezados después de realizar cambios en el equipo Linux, seleccione la conexión remota y, después, haga clic en Actualizar. Haga clic en Eliminar para quitar los encabezados sin eliminar la propia conexión. Haga clic en Explorar para abrir el directorio local en el Explorador de archivos. Trate a esta carpeta como de solo lectura. Para descargar los encabezados de una conexión existente creada antes de la versión 15.3 de Visual Studio 2017, seleccione la conexión y luego Descargar.
Puede habilitar el registro para ayudar a solucionar problemas:
configuración regional de destino de Linux
La configuración de idioma de Visual Studio no se propaga en los destinos de Linux porque Visual Studio no administra ni configura los paquetes instalados. Los mensajes que se muestran en la ventana de salida, como los errores de compilación, se muestran usando el idioma y la configuración regional del destino de Linux. Tendrá que configurar los destinos de Linux para la configuración regional que quiera.
Vea también
Set compiler and build properties (Establecer las propiedades del compilador y la compilación)
C++ General Properties (Linux C++) (Propiedades generales de C++ (Linux C++))
VC++ Directories (Linux C++) (Directorios de VC++ (Linux C++))
Copy Sources Project Properties (Linux C++) (Propiedades del proyecto Copiar orígenes (Linux C++))
Build Event Properties (Linux C++) (Propiedades de evento de compilación (Linux C++))