Sdílet prostřednictvím


Kurz: Vytváření multiplatformních projektů jazyka C++ v sadě Visual Studio

Vývoj pro Visual Studio C a C++ už není jenom pro Windows. V tomto kurzu se dozvíte, jak používat Visual Studio pro vývoj pro různé platformy v systémech Windows a Linux. Je založená na CMake, takže nemusíte vytvářet ani generovat projekty sady Visual Studio. Když otevřete složku, která obsahuje soubor CMakeLists.txt, Visual Studio automaticky nakonfiguruje IntelliSense a nastavení sestavení. Rychle můžete začít upravovat, vytvářet a ladit kód místně ve Windows. Potom v sadě Visual Studio přepněte konfiguraci tak, aby dělala totéž v Linuxu.

V tomto kurzu se naučíte:

  • Klonování opensourcového projektu CMake z GitHubu
  • otevření projektu v sadě Visual Studio
  • sestavení a ladění spustitelného cíle ve Windows
  • přidání připojení k počítači s Linuxem
  • sestavení a ladění stejného cíle v Linuxu

Požadavky

  • Nastavení sady Visual Studio pro vývoj pro různé platformy C++

    • Nejprve nainstalujte Sadu Visual Studio a zvolte vývoj desktopových aplikací s využitím úloh C++ a Linuxu. Tato minimální instalace je pouze 3 GB. V závislosti na rychlosti stahování by instalace neměla trvat déle než 10 minut.
  • Nastavení počítače s Linuxem pro vývoj pro jazyk C++ pro různé platformy

    • Visual Studio nevyžaduje žádnou konkrétní distribuci Linuxu. Operační systém může běžet na fyzickém počítači, ve virtuálním počítači nebo v cloudu. Můžete také použít Subsystém Windows pro Linux (WSL). Pro účely tohoto kurzu se ale vyžaduje grafické prostředí. WSL se tady nedoporučuje, protože je určený především pro operace příkazového řádku.

    • Visual Studio vyžaduje tyto nástroje na počítači s Linuxem: kompilátory C++, gdb, ssh, rsync, makea zip. V systémech založených na Debianu můžete pomocí tohoto příkazu nainstalovat tyto závislosti:

      sudo apt install -y openssh-server build-essential gdb rsync make zip
      
    • Visual Studio vyžaduje na počítači s Linuxem nejnovější verzi CMake s povoleným režimem serveru (alespoň 3.8). Microsoft vytvoří univerzální build CMake, který můžete nainstalovat na libovolnou distribuci Linuxu. Doporučujeme použít tento build, abyste měli jistotu, že máte nejnovější funkce. Binární soubory CMake můžete získat z forku Microsoftu úložiště CMake na GitHubu. Přejděte na tuto stránku a stáhněte si verzi, která odpovídá systémové architektuře na počítači s Linuxem, a pak ji označte jako spustitelný soubor:

      wget <path to binary>
      chmod +x cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh
      
    • Zobrazí se možnosti spuštění skriptu pomocí --helppříkazu . Doporučujeme použít -prefix možnost určit instalaci v cestě /usr , protože /usr/bin je výchozím umístěním, kde Visual Studio hledá CMake. Následující příklad ukazuje skript linux-x86_64. Pokud používáte jinou cílovou platformu, změňte ji podle potřeby.

      sudo ./cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh --skip-license --prefix=/usr
      
  • Git pro Windows nainstalovaný na počítači s Windows.

  • Účet GitHub.

Klonování opensourcového projektu CMake z GitHubu

V tomto kurzu se používá sada Bullet Physics SDK na GitHubu. Poskytuje simulace detekce kolizí a fyziky pro mnoho aplikací. Sada SDK obsahuje ukázkové spustitelné programy, které kompilují a spouštějí bez nutnosti psát jiný kód. Tento kurz neupravuje žádný zdrojový kód ani skripty sestavení. Začněte tím, že naklonujete úložiště bullet3 z GitHubu na počítači, na kterém máte nainstalovanou sadu Visual Studio.

git clone https://github.com/bulletphysics/bullet3.git
  1. V hlavní nabídce sady Visual Studio zvolte Soubor > otevřít > CMake. Přejděte do CMakeLists.txt souboru v kořenovém adresáři úložiště bullet3, které jste stáhli.

    Screenshot of Visual Studio menu showing File > Open > C Make. A folder has yet to be opened. This is just the menu opened to this point.

    Jakmile složku otevřete, struktura složek se zobrazí v Průzkumník řešení.

    Screenshot of the Solution Explorer window in Folder View mode. It displays the contents of the project (files and folders) and CMakeLists.txt is highlighted.

    Toto zobrazení ukazuje přesně to, co je na disku, ne logické nebo filtrované zobrazení. Ve výchozím nastavení se skryté soubory nezobrazují.

  2. Pokud chcete zobrazit všechny soubory ve složce, zvolte tlačítko Zobrazit všechny soubory.

    Screenshot of the Solution Explorer window with the Show All Files button highlighted. This button sits on top of the solution explorer window and to the right.

Přepnutí na zobrazení cílů

Když otevřete složku, která používá CMake, Visual Studio automaticky vygeneruje mezipaměť CMake. Tato operace může chvíli trvat v závislosti na velikosti projektu.

  1. V okně Výstup vyberte Zobrazit výstup a pak zvolte CMake, abyste mohli monitorovat stav procesu generování mezipaměti. Po dokončení operace se zobrazí zpráva "Dokončení extrakce cílových informací".

    Screenshot of the Output window. The Show output from: dropdown is set to CMake.

    Po dokončení této operace je technologie IntelliSense nakonfigurovaná. Projekt můžete sestavit a ladit aplikaci. Visual Studio teď zobrazuje logické zobrazení řešení na základě cílů zadaných v souborech CMakeLists.

  2. Pomocí tlačítka Řešení a složky v Průzkumník řešení přepněte do zobrazení cílů CMake.

    Screenshot of the Solutions and Folders button in the Solution Explorer. It is selected, showing a dropdown with a choice for c:\projects\bullet3 and another choice for CMake Targets View, which is selected.

    Toto zobrazení vypadá jako sada Bullet SDK:

    Screenshot of the Solution Explorer CMake targets view. It contains an entry called BULLET_PHYSICS Project, under which are entries like App_BasicExample (executable), App_ExampleBrowser (executable), and so on.

    Zobrazení Cíle poskytuje intuitivnější zobrazení toho, co je v této zdrojové databázi. Některé cíle jsou knihovny a jiné jsou spustitelné soubory.

  3. Rozbalením uzlu v zobrazení cílů CMake zobrazte jeho zdrojové soubory kódu, ať jsou tyto soubory umístěné na disku.

Přidání explicitní konfigurace windows x64-Debug

Visual Studio vytvoří výchozí konfiguraci x64-Debug pro Windows. Konfigurace jsou způsob, jakým Sada Visual Studio rozumí cíli platformy, kterou bude používat pro CMake. Výchozí konfigurace není reprezentována na disku. Když explicitně přidáte konfiguraci, Visual Studio vytvoří soubor s názvem CMake Nastavení.json. Naplní se nastavením všech zadaných konfigurací.

  1. Přidejte novou konfiguraci. Otevřete rozevírací seznam Konfigurace na panelu nástrojů a vyberte Spravovat konfigurace.

    Screenshot of the Configuration drop-down in the toolbar. Manage Configurations... is selected.

    Otevře se editor Nastavení CMake. Výběrem zeleného znaménka plus na levé straně editoru přidejte novou konfiguraci. Zobrazí se dialogové okno Přidat konfiguraci do CMake Nastavení:

    Screenshot of the Add Configuration to CMakeSettings dialog. It has entries such as Linux-Debug, x86-Debug. x64-Debug is selected.

    V tomto dialogovém okně se zobrazí všechny konfigurace, které jsou součástí sady Visual Studio, a všechny vlastní konfigurace, které vytvoříte. Pokud chcete pokračovat v používání konfigurace x64-Debug , která by měla být první, kterou přidáte. Vyberte x64-Debug a pak zvolte tlačítko Vybrat . Visual Studio vytvoří soubor CMake Nastavení.json s konfigurací pro x64-Debug a uloží ho na disk. Jakékoli názvy, které se vám líbí pro konfigurace, můžete použít tak, že změníte parametr názvu přímo v souboru CMake Nastavení.json.

Nastavení zarážky, sestavení a spuštění ve Windows

V tomto kroku ladíme ukázkový program, který demonstruje knihovnu Bullet Physics.

  1. V Průzkumník řešení vyberte AppBasicExampleGui a rozbalte ji.

  2. Otevřete soubor BasicExample.cpp.

  3. Nastavte zarážku, která se zobrazí po kliknutí ve spuštěné aplikaci. Událost kliknutí se zpracovává v metodě v pomocné třídě. Abyste se k ní rychle dostali:

    1. Vyberte CommonRigidBodyBase , že struktura BasicExample je odvozena z. Je to kolem 30.

    2. Klikněte pravým tlačítkem myši a zvolte Přejít na definici. Teď jste v hlavičce CommonRigidBodyBase.h.

    3. V zobrazení prohlížeče nad vaším zdrojem byste měli vidět, že jste v prohlížeči CommonRigidBodyBase. Napravo můžete vybrat členy, které chcete prozkoumat. Otevřete rozevírací seznam a výběrem přejděte mouseButtonCallback k definici této funkce v záhlaví.

      Screenshot of the Member list toolbar drop-down in the editor window. It list functions such as getRayTo(in x, int y). The mouse button callback method is highlighted.

  4. Umístěte zarážku na první řádek v rámci této funkce. Když v okně aplikace kliknete na tlačítko myši, dojde při spuštění pod ladicí program sady Visual Studio.

  5. Pokud chcete aplikaci spustit, vyberte na panelu nástrojů rozevírací seznam pro spuštění. Je to ta, která má zelenou ikonu přehrávání, která říká "Vybrat položku po spuštění". V rozevíracím seznamu vyberte AppBasicExampleGui.exe. Název spustitelného souboru se teď zobrazí na tlačítku pro spuštění:

    Screenshot of the Visual Studio toolbar launch drop-down. AppBasicExampleGui.exe is selected, but other options are visible such as App_ExampleBrowser.exe, App_HelloWorld.exe, and others.

  6. Zvolte tlačítko pro spuštění a sestavte aplikaci a potřebné závislosti a pak ji spusťte s připojeným ladicím programem sady Visual Studio. Po chvíli se zobrazí spuštěná aplikace:

    Screenshot of the running application. It's a collection of colored blocks on a yellow plane.

  7. Přesuňte myš do okna aplikace a kliknutím na tlačítko aktivujte zarážku. Zarážka přenese Visual Studio zpět do popředí a editor zobrazí řádek, na kterém je pozastaveno provádění. Můžete zkontrolovat proměnné aplikace, objekty, vlákna a paměť nebo interaktivně procházet kód. Zvolte Pokračovat , aby se aplikace obnovila, a pak ji normálně ukončete. Nebo pomocí tlačítka Zastavit zastavte provádění v sadě Visual Studio.

Přidání konfigurace Linuxu a připojení ke vzdálenému počítači

  1. Přidejte konfiguraci Linuxu. V zobrazení Průzkumník řešení klikněte pravým tlačítkem myši na soubor CMake Nastavení.json a vyberte Přidat konfiguraci. Zobrazí se stejné dialogové okno Přidat konfiguraci do CMake Nastavení jako předtím. Tentokrát vyberte Linux-Debug a pak uložte soubor CMake Nastavení.json (CTRL+s).

  2. Visual Studio 2019 verze 16.6 nebo novější přejděte dolů na konec editoru CMake Nastavení a vyberte Zobrazit upřesňující nastavení. Jako generátor CMake vyberte makefile systému Unix a pak uložte soubor CMake Nastavení.json (ctrl + s).

  3. V rozevíracím seznamu konfigurace vyberte Linux-Debug .

    Screenshot of the launch configuration drop-down. The visible options are: x64-Debug, Linux-Debug, and Manage Configurations.

    Pokud se připojujete k systému Linux poprvé, zobrazí se dialogové okno Připojení ke vzdálenému systému.

    Screenshot of the Visual Studio Connect to Remote System dialog.

    Dialogové okno obsahuje pole pro název hostitele, port, uživatelské jméno, typ ověřování a heslo. Všechna pole jsou prázdná s výjimkou portu je nastavená na 22 a typ ověřování je nastavený na Heslo.

    Pokud jste už přidali vzdálené připojení, můžete toto okno otevřít tak, že přejdete do nástroje > Možnosti > pro různé platformy > Připojení ion Manager.

  4. Zadejte informace o připojení k počítači s Linuxem a zvolte Připojení. Visual Studio tento počítač přidá jako CMake Nastavení.json jako výchozí připojení pro Linux-Debug. Také stáhne hlavičky ze vzdáleného počítače, takže získáte technologii IntelliSense specifickou pro toto vzdálené připojení. Potom Visual Studio odešle soubory na vzdálený počítač a vygeneruje mezipaměť CMake ve vzdáleném systému. Tyto kroky můžou nějakou dobu trvat v závislosti na rychlosti sítě a výkonu vzdáleného počítače. Víte, že je dokončený, když se v okně výstupu CMake zobrazí zpráva "Dokončení extrakce cílových informací".

Nastavení zarážky, sestavení a spuštění v Linuxu

Vzhledem k tomu, že se jedná o desktopovou aplikaci, je potřeba zadat do konfigurace ladění další informace o konfiguraci konfigurace ladění.

  1. V zobrazení Cílů CMake klikněte pravým tlačítkem na AppBasicExampleGui a zvolte Ladit a spustit Nastavení a otevřete soubor launch.vs.json, který je ve skryté podsložce .vs. Tento soubor je místní pro vaše vývojové prostředí. Pokud ho chcete vrátit se změnami a uložit ho s týmem, můžete ho přesunout do kořenového adresáře projektu. V tomto souboru byla přidána konfigurace pro AppBasicExampleGui. Tato výchozí nastavení fungují ve většině případů, ale ne tady. Vzhledem k tomu, že se jedná o desktopovou aplikaci, musíte zadat další informace ke spuštění programu, abyste ho viděli na počítači s Linuxem.

  2. Pokud chcete najít hodnotu proměnné DISPLAY prostředí na počítači s Linuxem, spusťte tento příkaz:

    echo $DISPLAY
    

    V konfiguraci pro AppBasicExampleGui je pole parametrů pipeArgs. Obsahuje řádek${debuggerCommand}. Je to příkaz, který se spustí gdb na vzdáleném počítači. Před spuštěním tohoto příkazu musí Visual Studio vyexportovat zobrazení do tohoto kontextu. Pokud je :1například hodnota zobrazení , upravte tento řádek následujícím způsobem:

    "export DISPLAY=:1;${debuggerCommand}",
    
  3. Spusťte a ladit aplikaci. Otevřete rozevírací seznam Vybrat položku po spuštění na panelu nástrojů a zvolte AppBasicExampleGui. Pak buď vyberte zelenou ikonu přehrávání na panelu nástrojů, nebo stiskněte klávesu F5. Aplikace a její závislosti jsou založené na vzdáleném počítači s Linuxem a pak se spustí pomocí připojeného ladicího programu sady Visual Studio. Na vzdáleném počítači s Linuxem by se mělo zobrazit okno aplikace.

  4. Přesuňte myš do okna aplikace a klikněte na tlačítko. Zarážka je zarážka. Provádění programu se pozastaví, Visual Studio se vrátí do popředí a uvidíte zarážku. V sadě Visual Studio by se také mělo zobrazit okno konzoly pro Linux. Okno poskytuje výstup ze vzdáleného počítače s Linuxem a může také přijmout vstup pro stdin. Stejně jako u každého okna sady Visual Studio ho můžete ukotvit tam, kde ho chcete vidět. Jeho pozice je zachována v budoucích relacích.

    Screenshot of the Visual Studio Linux Console Window.

    Výstup v okně označuje, že funkce C11 dynamicky načtené pomocí dlopen/dlsym je OK, byl vytvořen kontext GL 3.0 a vykreslovací kontext Direct GLX získal a provedl aktuální. Okno obsahuje různé informace o verzi pro GL_VENDOR, GL_VERSION, GL_SHADING_LANGUAGE_VERSION atd.

  5. Pomocí sady Visual Studio můžete prozkoumat proměnné aplikace, objekty, vlákna, paměť a procházet kód interaktivně. Tentokrát to ale děláte na vzdáleném počítači s Linuxem místo místního prostředí Windows. Pokud chcete, aby se aplikace normálně obnovila a ukončila, můžete zvolit tlačítko Zastavit, stejně jako u místního spuštění.

  6. Podívejte se do okna Zásobník volání a prohlédněte si volání x11OpenGLWindow od spuštění aplikace v sadě Visual Studio v Linuxu.

    The Visual Studio Call Stack window, showing Linux call stack.

    Calltack ukazuje zarážku na CommonRigidBodyBase::mouseMoveCallback, a volání, která předchází, jako je OnMouseMove, X11OpenGLWindow::p umpMessage atd.

Co jste se naučili

V tomto kurzu jste naklonovali základ kódu přímo z GitHubu. Vytvořili jste, spustili a ladili jste ho ve Windows bez úprav. Pak jste použili stejný základ kódu s dílčími změnami konfigurace, k sestavení, spuštění a ladění na vzdáleném počítači s Linuxem.

Další kroky

Další informace o konfiguraci a ladění projektů CMake v sadě Visual Studio: