Configurar um projeto do Linux com MSBuild no Visual Studio

O suporte ao Linux está disponível no Visual Studio 2017 e posterior.

Este tópico descreve como configurar um projeto do Linux baseado no MSBuild, conforme descrito em Criar um projeto do C++ do Linux com MSBuild no Visual Studio. Para projetos do Linux com CMake, confira Configurar um projeto do Linux com CMake.

Configure um projeto do Linux para ter como destino um computador Linux físico, uma máquina virtual ou o WSL (Subsistema do Windows para Linux).

Visual Studio 2019 versão 16.1 e posteriores:

  • Ao direcionar ao WSL, você pode evitar as operações de cópia para compilar e obter o IntelliSense, que são necessárias quando você tem um sistema Linux remoto como destino.

  • Especifique destinos do Linux separados para build e depuração.

Configurações gerais

Para ver as opções de configuração, selecione o menu Projeto > Propriedades ou clique com o botão direito do mouse no projeto em Gerenciador de Soluções e selecione Propriedades no menu de contexto. As Configurações gerais são exibidas.

Captura de tela da caixa de diálogo de Configuração geral das Páginas de Propriedades.

Por padrão, um executável (.out) é criado. Para criar uma biblioteca estática ou dinâmica ou usar um Makefile existente, use a configuração Tipo de Configuração.

Se você estiver criando para o WSL (Subsistema do Windows para Linux), a versão 1 do WSL será limitada a 64 processos de compilação paralelos. Isso é regido pela configuração Número Máximo de Trabalhos de Compilação Paralelos em Propriedades de configuração> C/C++ > Geral.

Independentemente da versão do WSL que você está usando, se você pretende usar mais de 64 processos de compilação paralelos, recomendamos que você compile com o Ninja, que geralmente será mais rápido e confiável. Para compilar com o Ninja, use a configuração Habilitar Compilação Incremental em Propriedades de Configuração > Geral.

Para obter mais informações sobre as configurações nas páginas de propriedades, confira Referência da página de propriedades do projeto do Linux.

Configurações remotas

Para alterar as configurações relacionadas ao computador Linux remoto, defina as configurações remotas exibidas em Geral.

  • Para especificar um computador Linux de destino remoto, use a entrada Computador de Build Remoto. Isso permitirá selecionar uma das conexões criadas anteriormente. Para criar uma entrada, confira a seção Como se conectar ao computador Linux remoto.

    Captura de tela mostrando o Computador de Build Remoto.

    Visual Studio 2019 versão 16.7 e posteriores: para destinar-se ao WSL (Subsistema do Windows para Linux), defina a lista suspensa Conjunto de Ferramentas da Platforma como GCC para Subsistema do Windows para Linux. As outras opções remotas desaparecerão e o caminho para o shell padrão do WSL será exibido em seu lugar:

    Captura de tela mostrando o Computador de Build do WSL.

    Se você tiver instalações do WSL lado a lado, especifique outro caminho aqui. Para obter mais informações sobre como gerenciar várias distribuições, confira Gerenciar e configurar o Subsistema do Windows para Linux.

    Especifique outro destino para depuração na página Propriedades de Configuração>Depuração.

  • O Diretório Raiz de Build Remoto determina o local raiz de onde o projeto é compilado no computador Linux remoto. Isso definirá ~/projects como padrão, a menos que tenha sido alterado.

  • O Diretório de Projeto de Build Remoto é onde esse projeto específico será criado no computador Linux remoto. Isso definirá $(RemoteRootDir)/$(ProjectName) como padrão, que será expandido para um diretório nomeado depois do projeto atual, no diretório raiz definido acima.

Observação

Para alterar os compiladores padrão do C e C++ ou o Vinculador e o Arquivador usados para compilar o projeto, use as entradas apropriadas na seção C/C++ > Geral e Vinculador > Geral. Você pode especificar uma versão específica do GCC ou do Clang, por exemplo. Para obter mais informações, confira Propriedades do C/C++ (Linux C++) e Propriedades de vinculador (Linux C++).

Copiar fontes (apenas sistemas remotos)

Observação

Esta seção não se aplica quando o WSL é o destino.

Durante o build em sistemas remotos, os arquivos de origem no computador de desenvolvimento são copiados para o computador Linux e compilados nele. Por padrão, todas as fontes no projeto do Visual Studio são copiadas para os locais definidos nas configurações acima. No entanto, outras fontes também podem ser adicionadas à lista ou copiar fontes pode ser totalmente desativado, que é o padrão para um projeto Makefile.

  • Fontes a serem copiadas determina quais fontes são copiadas para o computador remoto. Por padrão, o @(SourcesToCopyRemotely) define todos os arquivos de código-fonte do projeto como padrão, mas não inclui arquivos de ativo/recurso, como imagens.

  • Copiar fontes pode ser ativado e desativado para habilitar e desabilitar a cópia de arquivos de origem para o computador remoto.

  • Fontes adicionais a serem copiadas permite que você adicione outros arquivos de origem que serão copiados no sistema remoto. É possível especificar uma lista delimitada por ponto-e-vírgula ou usar a sintaxe := para especificar um nome local e remoto a ser usado:

C:\Projects\ConsoleApplication1\MyFile.cpp:=~/projects/ConsoleApplication1/ADifferentName.cpp;C:\Projects\ConsoleApplication1\MyFile2.cpp:=~/projects/ConsoleApplication1/ADifferentName2.cpp;

Eventos de build

Como toda a compilação está acontecendo em um computador remoto (ou no WSL), vários outros eventos de build foram adicionados à seção Eventos de Build em Propriedades do Projeto. Eles são os Evento de pré-build remoto, Evento de pré-link remoto e Evento de pós-build remoto, que ocorrerão no computador remoto antes ou após as etapas individuais no processo.

Captura de tela da caixa de diálogo das Páginas de Propriedades mostrando Eventos de Build.

IntelliSense para cabeçalhos em sistemas remotos

Quando você adiciona uma nova conexão no Gerenciador de Conexões, o Visual Studio detecta automaticamente os diretórios de inclusão para o compilador no sistema remoto. Visual Studio compacta e copia os arquivos para um diretório no seu computador local do Windows. Depois disso, sempre que você usar essa conexão em um projeto do Visual Studio ou CMake, os cabeçalhos nesses diretórios serão usados para fornecer IntelliSense.

Observação

No Visual Studio 2019 versão 16.5 e posterior, a cópia do cabeçalho remoto foi otimizada. Os cabeçalhos agora são copiados sob demanda ao abrir um projeto do Linux ou configurar o CMake para um destino do Linux. A cópia ocorre em segundo plano e é feita por projeto, com base nos compiladores especificados do projeto. Para obter mais informações, confira Melhorias na precisão e no desempenho do IntelliSense do Linux.

Essa funcionalidade depende de o computador Linux ter zip instalado. Você pode instalar o zip usando este comando apt-get:

sudo apt install zip

Para gerenciar o cache do cabeçalho, navegue até Ferramentas > Opções, Plataforma Cruzada > Gerenciador de Conexões > Gerenciador dos Cabeçalhos Remotos do IntelliSense. Para atualizar o cache do cabeçalho depois de fazer alterações no computador Linux, selecione a conexão remota e, em seguida, selecione Atualizar. Selecione Excluir para remover os cabeçalhos sem excluir a conexão em si. Selecione Explorar para abrir o diretório local no Explorador de Arquivos. Trate essa pasta como somente leitura. Para baixar os cabeçalhos para uma conexão existente que foi criada antes do Visual Studio 2017 versão 15.3, selecione a conexão e, em seguida, selecione Baixar.

Captura de tela mostrando a caixa de diálogo Opções com a opção Plataforma Cruzada > Gerenciador de Conexões > Gerenciador dos Cabeçalhos Remotos do IntelliSense selecionada.

Captura de tela mostrando a caixa de diálogo Opções com a opção Plataforma Cruzada > Gerenciador de Conexões selecionada.

Habilite o log ajudar a solucionar problemas:

Captura de tela da caixa de diálogo Opções mostrando as opções de Registro em Log Remoto.

Localidade de destino do Linux

As configurações de idioma do Visual Studio não são propagadas para destinos do Linux porque o Visual Studio não gerencia nem configura pacotes instalados. As mensagens mostradas na janela Saída, como erros de build, são mostradas usando o idioma e a localidade do destino do Linux. Você precisará configurar os destinos do Linux de acordo com a localidade desejada.

Confira também

Defina propriedades de build e compilador
Propriedades gerais de C++ (Linux C++)
Diretórios VC++ (Linux C++)
Copiar propriedades do projeto de origem (Linux C++)
Propriedades de evento de build (Linux C++)