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 návodu se naučíte, jak:

  • Klonování opensourcového projektu CMake z GitHubu
  • Otevřete projekt ve Visual Studio
  • sestavení a ladění spustitelného programu ve Windows
  • přidání připojení k počítači s Linuxem
  • sestavení a ladění stejného projektu na 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, abyste použili možnost -prefix k určení instalace 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 GitHubu.

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 návod 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.

    Snímek obrazovky s nabídkou sady Visual Studio zobrazující > Soubor Otevřít > C Make. Ještě nebyla otevřena žádná složka. Toto je pouze nabídka otevřená do tohoto bodu.

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

    Snímek obrazovky s oknem Průzkumníka řešení v režimu zobrazení složky Zobrazí obsah projektu (soubory a složky) a CMakeLists.txt je zvýrazněný.

    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.

    Snímek obrazovky s oknem Průzkumníka řešení se zvýrazněným tlačítkem Zobrazit všechny soubory Toto tlačítko se nachází v horní části okna Průzkumníka řešení a vpravo.

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í".

    Snímek okna Výstup. Rozevírací seznam 'Zobrazit výstup z:' je nastaven na CMake.

    Po dokončení této operace je technologie IntelliSense nakonfigurovaná. Projekt můžete sestavit a aplikaci ladit. 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íku řešení přepněte do zobrazení cílů CMake.

    Snímek obrazovky tlačítka Řešení a složky v Průzkumníku řešení. Rozbalovací seznam je vybrán a zobrazuje možnost c:\projects\bullet3 a další možnost zobrazení cílů CMake, která je vybrána.

    Takhle vypadá zobrazení pro Bullet SDK:

    Snímek obrazovky se zobrazením cílů CMake v Průzkumníku řešení Obsahuje položku s názvem BULLET_PHYSICS Project, pod kterou jsou položky jako App_BasicExample (spustitelný soubor), App_ExampleBrowser (spustitelný soubor) atd.

    Pohled na cíle poskytuje intuitivnější představu o tom, co je v této zdrojové základně. Některé cíle jsou knihovny a jiné jsou spustitelné soubory.

  3. Otevřete uzel v zobrazení cílů CMake pro zobrazení jeho zdrojových souborů, bez ohledu na to, kde jsou tyto soubory umístěny na disku.

Přidejte explicitní konfiguraci Windows x64-Debug

Visual Studio vytvoří výchozí konfiguraci x64-Debug pro Windows. Konfigurace jsou způsob, jak Visual Studio určuje cílovou platformu, 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 CMakeSettings.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.

    Snímek obrazovky s rozevíracím seznamem Konfigurace na panelu nástrojů Spravovat konfigurace... je vybrána.

    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 CMakeSettings :

    Snímek obrazovky s dialogovým oknem Přidat konfiguraci do CMakeSettings Obsahuje položky, jako je Linux-Debug, x86-Debug. Je vybrána možnost x64-Debug.

    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 CMakeSettings.json s konfigurací pro ladění x64 a uloží ho na disk. Názvy, které chcete pro své konfigurace použít, můžete použít tak, že změníte parametr názvu přímo v CMakeSettings.json.

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

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

  1. V Průzkumníku řešení vyberte AppBasicExampleGui a rozbalte ho.

  2. Otevřete soubor BasicExample.cpp.

  3. Nastavte bod přerušení, který se aktivuje při 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, ze kterého je struktura BasicExample odvozena. Je to kolem řádku 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 vyberte mouseButtonCallback, abyste přešli k definici této funkce v hlavičce.

      Snímek obrazovky zachycuje rozevírací seznam na panelu nástrojů seznamu členů v okně editoru. Zobrazuje seznam funkcí, jako je getRayTo(v x, int y), a metoda zpětného volání tlačítka myši je zvýrazněna.

  4. Umístěte zarážku na první řádek v rámci této funkce. K události dojde, když v okně aplikace kliknete na tlačítko myši, za předpokladu, že je aplikace spuštěna pod ladicím programem Visual Studio.

  5. Pokud chcete aplikaci spustit, vyberte na panelu nástrojů rozevírací seznam pro spuštění. Je to ta se zelenou ikonou přehrávání s nápisem "Vybrat položku při 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í:

    Snímek obrazovky s rozevíracím seznamem spuštění panelu nástrojů sady Visual Studio. AppBasicExampleGui.exe je vybraná, ale další možnosti jsou viditelné, například App_ExampleBrowser.exe, App_HelloWorld.exea další.

  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:

    Snímek obrazovky se spuštěnou aplikací Je to kolekce barevných bloků na žluté rovině.

  7. Přesuňte myš do okna aplikace a kliknutím na tlačítko aktivujete bod přerušení. Bod přerušení přenese zpět do popředí Visual Studio 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. Klikněte pravým tlačítkem na soubor CMakeSettings.json v zobrazení Průzkumníka řešení a vyberte Přidat konfiguraci. Zobrazí se stejné dialogové okno Přidat konfiguraci do CMakeSettings jako předtím. Tentokrát vyberte Linux-Debug a pak uložte soubor CMakeSettings.json (CTRL+s).

  2. Visual Studio 2019 verze 16.6 nebo novější Posuňte se dolů do dolní části Editoru nastavení CMake a vyberte Zobrazit upřesňující nastavení. Vyberte Unix Makefiles jako generátor CMake, pak uložte CMakeSettings.json soubor (ctrl + s).

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

    Snímek obrazovky s rozevíracím seznamem konfigurace spuštění Viditelné možnosti jsou: x64-Debug, Linux-Debug a Manage Configurations.

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

    Snímek obrazovky dialogového okna „Připojit ke vzdálenému systému“ v aplikaci Visual Studio

    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 > Options > Cross Platform > Connection Manager.

  4. Zadejte informace o připojení k počítači s Linuxem a zvolte Připojit. Visual Studio přidá tento počítač jako CMakeSettings.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í".

Nastavte zarážku, sestavte a spusťte na Linuxu

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

  1. V zobrazení Cílů CMake klikněte pravým tlačítkem na AppBasicExampleGui a zvolte Debug and Launch Settings (Nastavení ladění a spuštění ) 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 jej chcete zavést a uložit se svým týmem, můžete jej 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ý 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 laďte 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. Bod přerušení byl dosažen. Provádění programu se pozastaví, Visual Studio se vrátí do popředí a vy uvidíte bod přerušení. Ve Visual Studio by se mělo také objevit konzolové okno 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.

    Snímek obrazovky s oknem konzoly sady Visual Studio pro Linux

    Výstup v okně označuje, že funkce C11 dynamicky načtené pomocí dlopen/dlsym jsou v pořádku, byl vytvořen kontext GL 3.0 a vykreslovací kontext Direct GLX byl získán a aktivován. 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 zvolíte možnost Pokračovat, aplikace se normálně obnoví a ukončí, nebo 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 doby, kdy Visual Studio spustilo aplikaci na Linuxu.

    Okno Zásobník volání sady Visual Studio zobrazující zásobník volání Linuxu.

    Callstack ukazuje bod přerušení na CommonRigidBodyBase::mouseMoveCallback a volání, která mu předcházejí, jako OnMouseMove, X11OpenGLWindow::pumpMessage a podobně.

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: