Compartilhar via


Passo a passo: compilar e depurar C++ com WSL 2 e Visual Studio 2022

Visual Studio 2022 apresenta um conjunto de ferramentas C++ nativo para desenvolvimento no Subsistema do Windows para Linux versão 2 (WSL 2). Este conjunto de ferramentas já está disponível em Visual Studio versão 17.0 ou superior de 2022.

O WSL 2 é a nova versão recomendada do WSL (Subsistema do Windows para Linux). Ele fornece melhor desempenho do sistema de arquivos Linux, suporte à GUI e compatibilidade completa com chamadas do sistema. O conjunto de ferramentas WSL 2 do Visual Studio permite que você use Visual Studio para criar e depurar código C++ em distribuições do WSL 2 sem adicionar uma conexão SSH. Você já pode criar e depurar código C++ em distribuições do WSL 1 usando o conjunto de ferramentas nativo WSL 1 introduzido no Visual Studio versão 16.1 de 2019.

O conjunto de ferramentas WSL 2 do Visual Studio dá suporte a projetos linux baseados em CMake e MSBuild. O CMake é nossa recomendação para todo o desenvolvimento multiplataforma do C++ com Visual Studio. Recomendamos o CMake porque ele compila e depura o mesmo projeto em sistemas Windows, WSL e remotos.

Para obter uma apresentação em vídeo das informações neste tópico, consulte Video: Depurar C++ com distribuições do WSL 2 e Visual Studio 2022.

Contexto das ferramentas do WSL 2

O suporte de plataforma cruzada do C++ no Visual Studio pressupõe que todos os arquivos de origem se originem no sistema de arquivos Windows. Ao direcionar uma distribuição do WSL 2, o Visual Studio executa um comando local rsync para copiar arquivos do sistema de arquivos do Windows para o sistema de arquivos WSL. A cópia local de rsync não requer intervenção do usuário. Ele ocorre automaticamente quando Visual Studio detecta que você está usando uma distribuição WSL 2. Para saber mais sobre as diferenças entre o WSL 1 e o WSL 2, confira Comparar o WSL 1 com o WSL 2.

A integração de predefinições do CMake no Visual Studio dá suporte ao conjunto de ferramentas do WSL 2. Para saber mais, consulte Integração de Presets do CMake no Visual Studio e Visual Studio Code e Configure e compile com Presets do CMake no Visual Studio. Também há informações mais avançadas neste artigo em Considerações sobre projetos avançados do WSL 2 e do CMake.

Instalar as ferramentas de build

Instale as ferramentas necessárias para compilar e depurar no WSL 2. Você instala uma versão recente do CMake usando a implantação binária do CMake do Visual Studio em uma etapa posterior.

  1. Instale o WSL e uma distribuição do WSL 2 seguindo as instruções em Instalar WSL.

  2. No instalador do Visual Studio, verifique se C++ ferramentas do CMake para Linux está instalado. Para fazer isso, escolha Modify para sua versão do Visual Studio. Na guia Componentes individuais , pesquise ferramentas C++ do CMake para Linux e Mac e verifique se ele está selecionado e instalado. Esse componente é necessário para Visual Studio detectar suas instalações do WSL.

  3. Supondo que sua distribuição use apt (este passo a passo usa o Ubuntu), use os seguintes comandos para instalar as ferramentas de build necessárias na distribuição do WSL 2:

    sudo apt update
    sudo apt install cmake g++ gdb make ninja-build rsync zip
    

    O que será instalado:

    • Um compilador C++
    • gdb
    • CMake
    • rsync
    • zip
    • Um gerador para sistema de compilação subjacente

Desenvolvimento do CMake multiplataforma com uma distribuição do WSL 2

Este guia passo a passo usa GCC e Ninja no Ubuntu. E o Visual Studio 2022 versão 17.0 Versão Prévia 2 ou posterior.

Visual Studio define um projeto do CMake como uma pasta com um arquivo CMakeLists.txt na raiz do projeto. Neste passo a passo, você cria um novo projeto CMake usando o modelo Visual Studio CMake Project:

  1. Na tela Visual Studio Primeiros Passos, selecione Criar um novo projeto.

    Screenshot da caixa de diálogo introdução do Visual Studio 2022. As opções disponíveis são: Clonar um repositório, Abrir um projeto ou solução, Abrir uma pasta local, Criar um novo projeto ou Continuar sem código.":::

  2. Na caixa de texto Pesquisar modelos, digite "cmake". Escolha o tipo CMake Project e selecione Next. Dê ao projeto um nome e um local e selecione Criar.

  3. Habilite a integração de Predefinições do CMake do Visual Studio. Selecione Ferramentas>Opções>CMake>Geral. Selecione Preferir usar predefinições do CMake para configurar, compilar e testar e selecione OK. Como alternativa, você pode adicionar um CMakePresets.json arquivo à raiz do projeto. Para mais informações, confira Habilitar integração de predefinições do CMake.

    Captura de tela das opções de projeto do Visual Studio. Cmake > Geral está selecionado.

    No grupo de arquivos de configuração do CMake, "Usar as predefinições do CMake se disponíveis; caso contrário, usar CMakeSettings.json" está destacado e selecionado.

  4. Para ativar a integração: no menu principal, selecione Arquivo>Fechar Pasta. A página Introdução é exibida. Em Abrir recentemente, selecione a pasta que você acabou de fechar para reabri-la.

  5. Há três menus suspensos na barra de menus principal do Visual Studio. Use a lista suspensa à esquerda para selecionar seu sistema de destino ativo. Este é o sistema em que o CMake é invocado para configurar e compilar o projeto. Consultas do Visual Studio para instalações do WSL com wsl -l -v. Na imagem a seguir, WSL2: Ubuntu-20.04 é mostrado selecionado como o Sistema de Destino.

    Captura de tela da lista suspensa do sistema de destino do Visual Studio. WSL2: o Ubuntu-20.04 é o selecionado.

    Observação

    Se Visual Studio começar a configurar seu projeto automaticamente, leia a etapa 11 para gerenciar a implantação binária do CMake e continue para a etapa a seguir. Para personalizar esse comportamento, confira Modificar notificações automáticas de configuração e cache.

  6. Use a lista suspensa no meio para selecionar sua Predefinição de Configuração ativa. Configurar predefinições informa ao Visual Studio como invocar o CMake e gerar o sistema de build subjacente. Na etapa 7, a Predefinição de Configuração ativa é a predefinição linux-default criada pelo Visual Studio. Para criar uma predefinição de configuração personalizada, selecione Gerenciar Configurações... Para mais informações sobre configurar predefinições, confira Selecionar uma predefinição de configuração e Editar predefinições.

    Captura de tela do menu suspenso predefinido de configuração ativa do Visual Studio. Gerenciar configurações... está selecionado.

  7. Use a lista suspensa à direita para selecionar sua Predefinição de Build ativa. As configurações de compilação instruem o Visual Studio sobre como invocar a compilação. Na ilustração da etapa 7, a Predefinição de Build ativa é a predefinição de build Default criada pelo Visual Studio. Para obter mais informações sobre Predefinições de Build, confira Selecionar uma Predefinição de Build.

  8. Configure o projeto no WSL 2. Se a geração de projeto não iniciar automaticamente, então invoque manualmente configurar com Project>Configureproject-name

    Captura de tela do menu suspenso de configuração do projeto do Visual Studio. A opção Configurar CMakeProject está selecionada.

  9. Se você não tiver uma versão com suporte do CMake instalada na distribuição do WSL 2, o Visual Studio exibirá uma notificação abaixo da aba do menu principal para implantar uma versão recente do CMake. Selecione Sim para implantar binários do CMake na distribuição do WSL 2.

    Captura de tela de um prompt abaixo da barra de ferramentas do Visual Studio

    O usuário é solicitado a instalar os binários C Make mais recentes de C Make. org porque a versão do C Make com suporte não está instalada."

  10. Confirme se a etapa de configuração foi concluída e se você pode ver a mensagem Geração do CMake concluída na janela Saída no painel do CMake. Arquivos de build são gravados em um diretório no sistema de arquivos da distribuição do WSL 2.

    Screenshot da janela de saída do Visual Studio. Ela contém mensagens geradas durante a etapa de configuração, incluindo que a geração CMake está completa.

  11. Selecione o destino de depuração ativo. O menu suspenso de depuração lista todos os destinos do CMake disponíveis para o projeto.

    Captura de tela do menu suspenso de depuração do Visual Studio. CMakeProject está selecionado.

  12. Expanda a subpasta do projeto no Gerenciador de Soluções. No arquivo CMakeProject.cpp, defina um ponto de interrupção em main(). Você também pode navegar até a exibição de destinos do CMake selecionando o botão Seletor de Exibição no Gerenciador de Soluções, realçado na seguinte captura de tela:

    Screenshot do gerenciador de soluções Visual Studio mostrando o botão para alternar as exibições. Ele está localizado à direita do botão inicial.

  13. Selecione Depurar>Iniciar ou pressione F5. O projeto é compilado, o executável é iniciado na distribuição do WSL 2 e o Visual Studio interrompe a execução no ponto de interrupção. A saída do programa (neste caso, "Hello CMake.") está visível na janela do console do Linux:

    Captura de tela de um programa

    A janela do console Visual Studio Linux exibe a saída do programa: "Olá, C Make". A janela do editor mostra o programa olá mundo. A execução parou em um ponto de interrupção na linha que diz retornar 0;."

Agora você criou e depurou um aplicativo C++ com o WSL 2 e o Visual Studio 2022.

Considerações sobre projetos avançados do WSL 2 e do CMake

Visual Studio fornece suporte nativo apenas para o WSL 2 para projetos do CMake que usam CMakePresets.json como o arquivo de configuração ativo. Para migrar de CMakeSettings.json para CMakePresets.json, consulte Enable CMake Presets integration in Visual Studio.

Se você estiver objetivando uma distribuição do WSL 2 e não quiser usar o conjunto de ferramentas do WSL 2, no mapa de fornecedor das Configurações Remotas do Visual Studio em CMakePresets.json, defina forceWSL1Toolset como true . Para obter mais informações, consulte Mapa de Fornecedores de Configurações Remotas do Visual Studio.

Se forceWSL1Tooslet estiver definido como true, Visual Studio não manterá uma cópia dos arquivos de origem no sistema de arquivos WSL. Em vez disso, ele acessa arquivos de origem na unidade de Windows montada (/mnt/...).

Na maioria dos casos, é melhor usar o conjunto de ferramentas do WSL 2 com distribuições WSL 2 porque o WSL 2 é mais lento quando os arquivos de projeto são armazenados no sistema de arquivos Windows. Para saber mais sobre o desempenho do sistema de arquivos no WSL 2, confira Comparar o WSL 1 com o WSL 2.

Especifique configurações avançadas, como o caminho para o diretório no WSL 2 onde o projeto será copiado, as opções de origem da cópia e os argumentos do comando rsync no mapa do fornecedor de Configurações Remotas do Visual Studio em CMakePresets.json. Para obter mais informações, consulte mapa de fornecedores de Configurações Remotas do Visual Studio.

Os cabeçalhos do sistema ainda são copiados automaticamente para o sistema de arquivos Windows para fornecer a experiência nativa do IntelliSense. Você pode personalizar os cabeçalhos que são incluídos ou excluídos dessa cópia no mapa de fornecedores de Configurações Remotas do Visual Studio em CMakePresets.json.

Você pode alterar o modo IntelliSense ou especificar outras opções do IntelliSense no mapa do fornecedor de Configurações do Visual Studio em CMakePresets.json. Para obter detalhes sobre o mapa do fornecedor das Configurações Remotas do Visual Studio, consulte mapa do fornecedor das Configurações Remotas do Visual Studio.

Projetos do Linux baseados em WSL 2 e MSBuild

O CMake é recomendado para todo o desenvolvimento multiplataforma do C++ com Visual Studio porque permite que você crie e depure o mesmo projeto em sistemas Windows, WSL e remotos.

Mas talvez você tenha um projeto do Linux baseado em MSBuild.

Se você tiver um projeto linux baseado em MSBuild, poderá atualizar para o conjunto de ferramentas do WSL 2 no Visual Studio. Clique com o botão direito do mouse no projeto no gerenciador de soluções e escolha Propriedades>Geral>Conjunto de ferramentas de plataforma:

Captura de tela de uma lista suspensa do Visual Studio com o Conjunto de Ferramentas da Plataforma selecionado e, à direita, outra lista suspensa com o Conjunto de Ferramentas do WSL2 selecionado.

Se o seu destino for uma distribuição do WSL 2 e você não quiser usar o conjunto de ferramentas do WSL 2, no menu suspenso Conjunto de ferramentas da plataforma, selecione o conjunto de ferramentas GCC para Subsistema do Windows para Linux ou Clang para Subsistema do Windows para Linux. Se qualquer um desses conjuntos de ferramentas estiver selecionado, Visual Studio não manterá uma cópia dos arquivos de origem no sistema de arquivos WSL e, em vez disso, acessará arquivos de origem na unidade de Windows montada (/mnt/...). Os cabeçalhos do sistema ainda são copiados automaticamente para o sistema de arquivos Windows para fornecer uma experiência nativa do IntelliSense. Personalize os cabeçalhos incluídos ou excluídos dessa cópia em Páginas de Propriedades>Geral.

Na maioria dos casos, é melhor usar o conjunto de ferramentas WSL 2 com distribuições WSL 2 porque o WSL 2 é mais lento quando os arquivos de projeto são armazenados no sistema de arquivos Windows. Para saber mais, confira Comparação entre o WSL 1 e o WSL 2.

Confira também

Video: Depurar C++ com Distribuições do WSL 2 e Visual Studio 2022
Download Visual Studio 2022
Criar um projeto do CMake Linux no Visual Studio
Tutorial: depurar um projeto do CMake em um computador de Windows remoto