Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O desenvolvimento do Visual Studio C e C++ não é mais apenas para Windows. Este tutorial mostra como usar o Visual Studio para desenvolvimento de plataforma cruzada C++ no Windows e Linux. Ele é baseado no CMake, portanto, você não precisa criar ou gerar projetos do Visual Studio. Quando você abre uma pasta que contém um arquivo CMakeLists.txt, o Visual Studio define as configurações do IntelliSense e da compilação automaticamente. Você pode rapidamente começar a editar, criar e depurar seu código localmente no Windows. Em seguida, alterne sua configuração para fazer o mesmo no Linux, tudo de dentro do Visual Studio.
Neste tutorial, você aprenderá a:
- clonar um projeto CMake de código aberto do GitHub
- abrir o projeto no Visual Studio
- criar e depurar um alvo executável no Windows
- adicionar uma conexão a uma máquina Linux
- construir e depurar o mesmo alvo no Linux
Pré-requisitos
Configurar o Visual Studio para desenvolvimento C++ entre plataformas
- Primeiro, instale o Visual Studio e escolha o desenvolvimento Desktop com cargas de trabalho C++ e Linux com C++. Esta instalação mínima é de apenas 3 GB. Dependendo da velocidade de download, a instalação não deve demorar mais de 10 minutos.
Configurar uma máquina Linux para desenvolvimento C++ multiplataforma
O Visual Studio não requer nenhuma distribuição específica do Linux. O sistema operacional pode ser executado em uma máquina física, em uma VM ou na nuvem. Você também pode usar o Subsistema Windows para Linux (WSL). No entanto, para este tutorial, é necessário um ambiente gráfico. O WSL não é recomendado aqui, porque se destina principalmente a operações de linha de comando.
O Visual Studio requer estas ferramentas na máquina Linux: compiladores C++,
gdb, ,sshrsync,makeezip. Em sistemas baseados em Debian, você pode usar este comando para instalar estas dependências:sudo apt install -y openssh-server build-essential gdb rsync make zipO Visual Studio requer uma versão recente do CMake na máquina Linux que tenha o modo de servidor ativado (pelo menos 3.8). A Microsoft produz uma compilação universal do CMake que você pode instalar em qualquer distro Linux. Recomendamos que você use essa compilação para garantir que você tenha os recursos mais recentes. Você pode adquirir os binários do CMake a partir da ramificação da Microsoft do repositório CMake no GitHub. Vá para essa página e baixe a versão que corresponde à arquitetura do sistema em sua máquina Linux e, em seguida, marque-a como um executável:
wget <path to binary> chmod +x cmake-3.11.18033000-MSVC_2-Linux-x86_64.shVocê pode ver as opções para executar o script com
--help. Recomendamos que utilize a opção-prefixpara especificar a instalação pelo caminho /usr, porque /usr/bin é o local padrão onde o Visual Studio procura o CMake. O exemplo a seguir mostra o script Linux-x86_64. Altere-o conforme necessário se você estiver usando uma plataforma de destino diferente.sudo ./cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh --skip-license --prefix=/usr
Git para Windows instalado na sua máquina Windows.
Uma conta do GitHub.
Clone um projeto CMake de código aberto do GitHub
Este tutorial usa o Bullet Physics SDK no GitHub. Ele fornece deteção de colisão e simulações físicas para muitas aplicações. O SDK inclui exemplos de programas executáveis que compilam e executam sem ter que escrever outro código. Este tutorial não modifica nenhum código-fonte ou scripts de construção. Para começar, clone o repositório bullet3 do GitHub na máquina onde você tem o Visual Studio instalado.
git clone https://github.com/bulletphysics/bullet3.git
No menu principal do Visual Studio, escolha File > Open > CMake. Navegue até o
CMakeLists.txtarquivo na raiz do repositório bullet3 que você baixou.
Assim que abrir a pasta, a estrutura de pastas torna-se visível no Solution Explorer.
Esta vista mostra-lhe exatamente o que está no disco, não uma vista lógica ou filtrada. Por padrão, ele não mostra arquivos ocultos.
Escolha o botão Mostrar todos os arquivos para ver todos os arquivos na pasta.
Mudar para a vista de destinos
Quando você abre uma pasta que usa o CMake, o Visual Studio gera automaticamente o cache do CMake. Esta operação pode demorar alguns momentos, dependendo do tamanho do seu projeto.
Na janela Saída, selecione Mostrar saída de e, em seguida, escolha CMake para monitorar o status do processo de geração de cache. Quando a operação estiver concluída, ela diz "Extração de informações de destino concluída".
Após a conclusão desta operação, o IntelliSense é configurado. Você pode criar o projeto e depurar o aplicativo. Visual Studio agora mostra uma exibição lógica da solução, com base nos destinos especificados nos arquivos CMakeLists.
Use o botão Soluções e Pastas no Gerenciador de Soluções para alternar para o Modo de Exibição de Destinos CMake.
Veja como essa exibição se parece para o Bullet SDK:
A visualização de alvos fornece uma visão mais intuitiva do que se encontra nesta base de origem. Você pode ver que alguns destinos são bibliotecas e outros são executáveis.
Expanda um nó no CMake Targets View para ver seus arquivos de código-fonte, onde quer que esses arquivos estejam localizados no disco.
Adicionar uma configuração explícita do Windows x64-Debug
O Visual Studio cria uma configuração x64-Debug padrão para Windows. As configurações são como o Visual Studio entende qual destino de plataforma ele usará para o CMake. A configuração padrão não é representada no disco. Quando você adiciona explicitamente uma configuração, o Visual Studio cria um arquivo chamado CMakeSettings.json. Ele é preenchido com configurações para todas as configurações que você especificar.
Adicione uma nova configuração. Abra a lista suspensa Configuração na barra de ferramentas e selecione Gerenciar configurações.
O CMake Settings Editor é aberto. Selecione o sinal de adição verde no lado esquerdo do editor para adicionar uma nova configuração. A caixa de diálogo Adicionar configuração ao CMakeSettings é exibida:
Esta caixa de diálogo mostra todas as configurações incluídas no Visual Studio, além de quaisquer configurações personalizadas que você criar. Se você quiser continuar a usar uma configuração x64-Debug que deve ser a primeira que você adicionar. Selecione x64-Debug e, em seguida, escolha o botão Selecionar . O Visual Studio cria o arquivo CMakeSettings.json com uma configuração para x64-Debug e o salva no disco. Você pode usar os nomes que quiser para suas configurações alterando o parâmetro name diretamente no CMakeSettings.json.
Definir um ponto de interrupção, compilar e executar no Windows
Nesta etapa, depuramos um programa de exemplo que demonstra a biblioteca Bullet Physics.
No Gerenciador de Soluções, selecione AppBasicExampleGui e expanda-o.
Abra o ficheiro
BasicExample.cpp.Defina um ponto de interrupção que seja atingido quando você clicar no aplicativo em execução. O evento click é manipulado em um método dentro de uma classe auxiliar. Para lá chegar rapidamente:
Selecione
CommonRigidBodyBasea partir da qual a structBasicExampleé derivada. É por volta da linha 30.Clique com o botão direito do mouse e escolha Ir para definição. Agora você está no cabeçalho CommonRigidBodyBase.h.
Na visualização do navegador acima da sua fonte, você verá que está no
CommonRigidBodyBase. À direita, você pode selecionar membros para examinar. Abra o menu suspenso e selecionemouseButtonCallbackpara aceder à definição dessa função no cabeçalho.
Coloque um ponto de interrupção na primeira linha dentro desta função. Ele é ativado quando clicas num botão do rato dentro da janela da aplicação, ao ser executada no depurador do Visual Studio.
Para iniciar o aplicativo, selecione a lista suspensa de inicialização na barra de ferramentas. É aquele com o ícone de reprodução verde que diz "Selecionar item de inicialização". Na lista suspensa, selecione AppBasicExampleGui.exe. O nome do executável agora é exibido no botão de inicialização:
Escolha o botão de inicialização para criar o aplicativo e as dependências necessárias e, em seguida, inicie-o com o depurador do Visual Studio anexado. Após alguns momentos, o aplicativo em execução aparece:
Mova o mouse para a janela do aplicativo e clique em um botão para acionar o ponto de interrupção. O ponto de interrupção traz o Visual Studio de volta para o primeiro plano e o editor mostra a linha onde a execução é pausada. Você pode inspecionar as variáveis do aplicativo, objetos, threads e memória ou percorrer seu código interativamente. Escolha Continuar para permitir que o aplicativo seja retomado e saia dele normalmente. Ou, interrompa a execução no Visual Studio usando o botão parar.
Adicione uma configuração Linux e conecte-se à máquina remota
Adicione uma configuração do Linux. Clique com o botão direito do mouse no arquivo CMakeSettings.json na visualização Gerenciador de Soluções e selecione Adicionar Configuração. Você verá a mesma caixa de diálogo Adicionar configuração ao CMakeSettings como antes. Selecione Linux-Debug desta vez e salve o arquivo CMakeSettings.json (ctrl + s).
Visual Studio 2019 versão 16.6 ou posterior Role para baixo até a parte inferior do CMake Settings Editor e selecione Mostrar configurações avançadas. Selecione Unix Makefiles como o gerador CMake e, em seguida, salve o arquivo CMakeSettings.json (ctrl + s).
Selecione Linux-Debug na lista suspensa de configuração.
Se for a primeira vez que você está se conectando a um sistema Linux, a caixa de diálogo Conectar ao sistema remoto será exibida.
A caixa de diálogo tem campos para o nome do host, porta, nome de usuário, tipo de autenticação e senha. Todos os campos estão em branco, exceto Porta está definida como 22 e Tipo de autenticação está definido como Senha.
Se já tiver adicionado uma ligação remota, pode abrir esta janela navegando até Ferramentas > Opções > Cross Platform > Connection Manager.
Forneça as informações de conexão à sua máquina Linux e escolha Conectar. O Visual Studio designa essa máquina como CMakeSettings.json, estabelecendo-a como a sua conexão padrão para Linux-Debug. Ele também descarrega os cabeçalhos da sua máquina remota, para que obtenha IntelliSense específico para essa conexão remota. Em seguida, o Visual Studio envia seus arquivos para a máquina remota e gera o cache CMake no sistema remoto. Essas etapas podem levar algum tempo, dependendo da velocidade da rede e da potência da máquina remota. Você sabe que está completo quando a mensagem "Extração de informações de destino concluída" aparece na janela de saída do CMake.
Definir um ponto de interrupção, compilar e executar no Linux
Como é uma aplicação de desktop, é necessário fornecer mais algumas informações de configuração para a configuração de depuração.
Na visualização CMake Targets, clique com o botão direito do mouse em AppBasicExampleGui e escolha Depurar e Iniciar Configurações para abrir o arquivo de launch.vs.json que está na subpasta .vs oculta. Este arquivo é local para seu ambiente de desenvolvimento. Você pode movê-lo para a raiz do seu projeto se desejar registar e salvá-lo com a sua equipa. Neste arquivo, uma configuração foi adicionada para AppBasicExampleGui. Essas configurações padrão funcionam na maioria dos casos, mas não aqui. Porque é um aplicativo de desktop, você precisa fornecer algumas informações adicionais para iniciar o programa para que você possa vê-lo em sua máquina Linux.
Para encontrar o valor da variável
DISPLAYde ambiente em sua máquina Linux, execute este comando:echo $DISPLAYNa configuração de AppBasicExampleGui, há uma matriz de parâmetros, "pipeArgs". Ele contém uma linha: "${debuggerCommand}". É o comando que lança
gdbna máquina remota. O Visual Studio deve exportar a exibição para esse contexto antes que o comando seja executado. Por exemplo, se o valor da sua exibição for:1, modifique essa linha da seguinte maneira:"export DISPLAY=:1;${debuggerCommand}",Inicie e depure seu aplicativo. Abra o menu suspenso Selecionar Item de Inicialização na barra de ferramentas e escolha AppBasicExampleGui. Em seguida, escolha o ícone de reprodução verde na barra de ferramentas ou pressione F5. O aplicativo e suas dependências são criados na máquina Linux remota e, em seguida, iniciados com o depurador do Visual Studio anexado. Em sua máquina Linux remota, você verá uma janela de aplicativo aparecer.
Mova o mouse para a janela do aplicativo e clique em um botão. O ponto de interrupção é atingido. A execução do programa pausa, o Visual Studio volta para o primeiro plano e você vê seu ponto de interrupção. Você também deve ver uma janela do console Linux aparecer no Visual Studio. A janela fornece saída da máquina Linux remota, e também pode aceitar entrada para
stdin. Como qualquer janela do Visual Studio, podes encaixá-la onde te seja mais conveniente. A sua posição será mantida em futuras sessões.
A saída na janela indica que as funções C11 carregadas dinamicamente usando dlopen/dlsym estão OK, um contexto GL 3.0 foi criado e o contexto de renderização Direct GLX obtido e tornado atual. A janela tem várias informações de versão para GL_VENDOR, GL_VERSION, GL_SHADING_LANGUAGE_VERSION e assim por diante.
Você pode inspecionar as variáveis de aplicativo, objetos, threads, memória e percorrer seu código interativamente usando o Visual Studio. Mas desta vez, você está fazendo tudo isso em uma máquina Linux remota em vez do seu ambiente Windows local. Você pode escolher Continuar para deixar o aplicativo retomar e sair normalmente, ou você pode escolher o botão parar, como na execução local.
Observe a janela Pilha de Chamadas e visualize as chamadas para
x11OpenGLWindowdesde que o Visual Studio iniciou a aplicação no Linux.
A pilha de chamadas mostra o ponto de interrupção em CommonRigidBodyBase::mouseMoveCallback e as chamadas que o precedem, como OnMouseMove, X11OpenGLWindow::pumpMessage e assim por diante.
O que aprendeu
Neste tutorial, você clonou uma base de código diretamente do GitHub. Você criou, executou e depurou ele no Windows sem modificações. Em seguida, você usou a mesma base de código, com pequenas alterações de configuração, para compilar, executar e depurar em uma máquina Linux remota.
Próximos passos
Saiba mais sobre como configurar e depurar projetos CMake no Visual Studio:
Projetos CMake no Visual Studio
Configurar um projeto CMake Linux
Conecte-se ao seu computador Linux remoto
Personalizar as configurações de compilação do CMake
Configurar sessões de depuração do CMake
Implante, execute e depure seu projeto Linux
Referência de configuração predefinida do CMakevcpkg em projetos do CMakeInstalar e usar pacotes com o CMake no Visual Studio