Partilhar via


Tutorial: Construir e depurar C++ com WSL 2 e Visual Studio 2022

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

O WSL 2 é a nova versão recomendada do Subsistema Windows para Linux (WSL). Ele fornece melhor desempenho do sistema de arquivos Linux, suporte a GUI e compatibilidade total com chamadas de sistema. O conjunto de ferramentas WSL 2 do Visual Studio permite usar o Visual Studio para compilar e depurar código C++ em distribuições WSL 2 sem adicionar uma ligação SSH. Já pode compilar e depurar código C++ em distribuições WSL 1 usando o conjunto nativo de ferramentas WSL 1 introduzido em Visual Studio versão 16.1 de 2019.

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

Para uma apresentação em vídeo da informação deste tema, veja Vídeo: Depurar C++ com Distribuições WSL 2 e Visual Studio 2022.

Plano de fundo do conjunto de ferramentas do WSL 2

O suporte multiplataforma C++ no Visual Studio assume que todos os ficheiros fonte têm origem no sistema de ficheiros Windows. Ao direcionar uma distribuição WSL 2, Visual Studio executa um comando local rsync para copiar ficheiros do sistema de ficheiros Windows para o sistema WSL. A cópia local rsync não requer nenhuma intervenção do usuário. Acontece automaticamente quando o Visual Studio deteta que estás a usar uma distribuição WSL 2. Para saber mais sobre as diferenças entre WSL 1 e WSL 2, consulte Comparando WSL 1 e WSL 2.

A integração do CMake Presets no Visual Studio suporta o conjunto de ferramentas WSL 2. Para saber mais, veja Integração de CMake Presets no Visual Studio e Visual Studio Code e Configuração e construção com CMake Presets no Visual Studio. Há também informações mais avançadas neste artigo em Considerações sobre projetos avançados WSL 2 e CMake.

Instalar as ferramentas de compilação

Instale as ferramentas necessárias para compilar e depurar no WSL 2. Instala uma versão recente do CMake usando a implementação binária CMake do Visual Studio numa etapa posterior.

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

  2. No instalador Visual Studio, verifica se as ferramentas CMake C++ para Linux estão instaladas. Para isso, escolha Modify para a sua versão do Visual Studio. No separador Componentes Individuais , procura por ferramentas CMake em C++ para Linux e Mac e certifica-te de que está selecionada e instalada. Este componente é necessário para que o Visual Studio detete as suas instalações WSL.

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

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

    Que instala:

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

Desenvolvimento CMake multiplataforma com uma distro WSL 2

Este passo a passo usa GCC e Ninja no Ubuntu. E Visual Studio 2022 versão 17.0 Preview 2 ou posterior.

Visual Studio define um projeto CMake como uma pasta com um ficheiro CMakeLists.txt na raiz do projeto. Neste tutorial, cria um novo projeto CMake utilizando o modelo Visual Studio CMake Project:

  1. No ecrã Visual Studio Começar, selecione Criar um novo projeto.

    Captura de ecrã da caixa de diálogo de início 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 Próximo. Dê ao projeto um nome e um local e selecione Criar.

  3. Ative a integração dos Presets CMake do Visual Studio. Selecione Ferramentas>Opções>CMake>Geral. Selecione Preferir usar predefinições do CMake para configurar, compilar e testar e, em seguida, selecione OK. Em alternativa, pode adicionar um CMakePresets.json ficheiro à raiz do projeto. Para obter mais informações, consulte Habilitar a integração de predefinições do CMake.

    Captura de ecrã das opções do projeto Visual Studio. Cmake > General é selecionado.

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

  4. Para ativar a integração: no menu principal, selecione File>Close Folder. A página Introdução é exibida. Em Abrir recente, selecione a pasta que acabou de fechar para reabri-la.

  5. Existem três menus suspensos na barra de menu principal do Visual Studio. Utilize a lista suspensa à esquerda para selecionar o seu sistema-alvo ativo. Este é o sistema onde o CMake é invocado para configurar e construir o projeto. Visual Studio procura instalações WSL com wsl -l -v. Na imagem a seguir, WSL2: Ubuntu-20.04 é mostrado selecionado como o sistema de destino.

    Captura de ecrã do menu suspenso do sistema de Visual Studio alvo. WSL2: Ubuntu-20.04 é o selecionado.

    Observação

    Se o Visual Studio começar a configurar o seu projeto automaticamente, leia o passo 11 para gerir a implementação binária do CMake e depois continue para o passo seguinte. Para personalizar esse comportamento, consulte Modificar a configuração automática e as notificações de cache.

  6. Utilize a lista suspensa no meio para selecionar a sua predefinição de configuração ativa. O Configure Presets indica ao Visual Studio como invocar o CMake e gerar o sistema de compilação subjacente. No passo 7, o Configurar Preset ativo é o Preset linux-default criado por Visual Studio. Para criar uma predefinição de configuração personalizada, selecione Gerenciar configurações... Para obter mais informações sobre Configurar predefinições, consulte Selecionar uma configuração de predefinição e Editar predefinições.

    Captura de ecrã do menu pendente da configuração ativa predefinida do Visual Studio. Gerir Configurações... está selecionada.

  7. Use a lista suspensa à direita para selecionar a sua predefinição de construção ativa. Os Presets de Build dizem ao Visual Studio como invocar o build. Na ilustração do passo 7, a Predefinição de Compilação ativa é a Predefinição de Compilação Default criada pelo Visual Studio. Para obter mais informações sobre predefinições de compilação, consulte Selecionar uma predefinição de compilação.

  8. Configure o projeto no WSL 2. Se a geração do projeto não começar automaticamente, então invoque manualmente configure com Project>Configureproject-name

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

  9. Se não tiver uma versão suportada do CMake instalada na sua distribuição WSL 2, então o Visual Studio pede, por baixo da barra de menu principal, para instalar uma versão recente do CMake. Selecione Sim para implantar binários do CMake em sua distro WSL 2.

    Captura de ecrã de um prompt por baixo da barra de ferramentas Visual Studio

    O utilizador é questionado se deve instalar os binários mais recentes do CMake a partir do CMake. org porque a versão C Make suportada não está instalada."

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

    Captura de ecrã da janela de Saída do Visual Studio. Contém mensagens geradas durante o passo 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 alvos CMake disponíveis para o projeto.

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

  12. Expande a subpasta do projeto na Explorador de Soluções. CMakeProject.cpp No arquivo, defina um ponto de interrupção em main(). Também pode navegar até à vista de alvos do CMake selecionando o botão View Picker no Explorador de Soluções, destacado na seguinte captura de ecrã:

    Captura de ecrã do explorador de soluções Visual Studio a mostrar o botão para mudar de vista. Está localizado à direita do botão home.

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

    Screenshot de um programa hello world em execução.

    A janela da consola Linux do Visual Studio mostra a saída do programa: 'Hello C Make.' A janela do editor mostra o programa hello world. A execução parou em um ponto de interrupção na linha que diz retorno 0;."

Agora criou e depurou uma aplicação em C++ com WSL 2 e Visual Studio 2022.

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

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

Se estiveres a apontar para uma distribuição WSL 2 e não quiseres usar o conjunto de ferramentas WSL 2, então no mapa de fornecedores de Definições Remotas Visual Studio em CMakePresets.json, define forceWSL1Toolset para true . Para mais informação, consulte Mapa do fornecedor de configurações remotas do Visual Studio.

Se forceWSL1Tooslet estiver definido para true, então Visual Studio não mantém uma cópia dos seus ficheiros de origem no sistema de ficheiros WSL. Em vez disso, acede aos ficheiros fonte na unidade de Windows montada (/mnt/...).

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 ficheiros do projeto são armazenados no sistema de ficheiros do Windows. Para saber mais sobre o desempenho do sistema de arquivos no WSL 2, consulte Comparando o WSL 1 e o WSL 2.

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

Os cabeçalhos do sistema continuam a ser copiados automaticamente para o sistema de ficheiros do Windows para fornecer a experiência nativa do IntelliSense. Pode personalizar os cabeçalhos que estão incluídos ou excluídos desta cópia no mapa de fornecedores de Definições Remotas Visual Studio em CMakePresets.json.

Pode alterar o modo IntelliSense, ou especificar outras opções do IntelliSense, no mapa de fornecedores das definições do Visual Studio em CMakePresets.json. Para mais detalhes sobre o mapa de fornecedores, veja Visual Studio Configurações Remotas mapa do fornecedor.

Projetos Linux baseados em WSL 2 e MSBuild

O CMake é recomendado para todo o desenvolvimento multiplataforma C++ com Visual Studio porque permite construir e depurar o mesmo projeto em Windows, WSL e sistemas remotos.

Mas você pode ter um projeto Linux baseado em MSBuild.

Se tiveres um projeto Linux baseado no MSBuild, podes atualizar para o conjunto de ferramentas WSL 2 no Visual Studio. Clique com o botão direito do mouse no projeto no gerenciador de soluções e escolha Properties>General>Platform Toolset:

Captura de ecrã de um menu suspenso Visual Studio com o conjunto de ferramentas da plataforma selecionado, e à direita, outro menu suspenso com o conjunto de ferramentas WSL2 selecionado.

Se estiver a direcionar-se para uma distribuição WSL 2 e não quiser usar o conjunto de ferramentas WSL 2, então, na lista pendente Platform Toolset, selecione o conjunto de ferramentas GCC para Subsistema Windows para Linux ou Clang para Subsistema Windows para Linux. Se algum destes conjuntos de ferramentas for selecionado, Visual Studio não mantém uma cópia dos seus ficheiros de origem no sistema de ficheiros WSL e, em vez disso, acede aos ficheiros de origem através da unidade de Windows montada (/mnt/...). Os cabeçalhos do sistema continuam a ser copiados automaticamente para o sistema de ficheiros Windows para proporcionar uma experiência nativa IntelliSense. Personalize os cabeçalhos incluídos ou excluídos desta cópia em Páginas de propriedades>Gerais.

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 ficheiros do projeto são armazenados no sistema de ficheiros do Windows. Para saber mais, consulte Comparando WSL 1 e WSL 2.

Ver também

Vídeo: Depurar C++ com distribuições WSL 2 e Visual Studio 2022
Descarregar Visual Studio 2022
Criar um projeto CMake Linux em Visual Studio
Tutorial: Depurar um projeto CMake numa máquina Windows remota