Megosztás a következőn keresztül:


Oktatóanyag: C++ platformfüggetlen projektek létrehozása a Visual Studióban

A Visual Studio C és C++ fejlesztése már nem csak Windowshoz készült. Ez az oktatóanyag bemutatja, hogyan használható a Visual Studio for C++ platformfüggetlen fejlesztés Windows és Linux rendszeren. A CMake-en alapul, így nem kell Visual Studio-projekteket alkotnia vagy generálnia. Amikor megnyit egy CMakeLists.txt fájlt tartalmazó mappát, a Visual Studio automatikusan konfigurálja az IntelliSense és a build beállításait. Gyorsan megkezdheti a kód helyi szerkesztését, összeállítását és hibakeresését a Windowsban. Ezután állítsa át a konfigurációt úgy, hogy a Linuxon is ugyanezt tegye, mindezt a Visual Studióban.

Ebben az oktatóanyagban a következőket sajátíthatja el:

  • nyílt forráskódú CMake-projekt klónozása a GitHubról
  • a projekt megnyitása a Visual Studióban
  • végrehajtható cél létrehozása és hibakeresése Windows rendszeren
  • kapcsolat hozzáadása Linux-géphez
  • ugyanazon cél létrehozása és hibakeresése Linuxon

Előfeltételek

  • A Visual Studio beállítása platformfüggetlen C++ fejlesztéshez

    • Először telepítse a Visual Studiót , és válassza ki a C++ és Linux rendszerű, C++ számítási feladatokkal rendelkező asztali fejlesztést. Ez a minimális telepítés csak 3 GB. A letöltési sebességtől függően a telepítés nem tart tovább 10 percnél.
  • Linux rendszerű gép beállítása platformfüggetlen C++ fejlesztéshez

    • A Visual Studio nem igényel linuxos disztribúciót. Az operációs rendszer fizikai gépen, virtuális gépen vagy felhőben is futtatható. Használhatja a Linux windowsos alrendszerét is (WSL). Ehhez az oktatóanyaghoz azonban grafikus környezetre van szükség. A WSL használata itt nem ajánlott, mert elsősorban parancssori műveletekhez készült.

    • A Visual Studio a Következő eszközöket igényli a Linux-gépen: C++ fordítók, gdb, ssh, rsync, makeés zip. Debian-alapú rendszereken a következő függőségek telepítéséhez használhatja ezt a parancsot:

      sudo apt install -y openssh-server build-essential gdb rsync make zip
      
    • A Visual Studio megköveteli a CMake legújabb verzióját a linuxos gépen, amelyen engedélyezve van a kiszolgáló mód (legalább 3.8). A Microsoft létrehoz egy univerzális CMake-buildet, amelyet bármilyen Linux-disztribúcióra telepíthet. Javasoljuk, hogy ezt a buildet használva győződjön meg arról, hogy a legújabb funkciókkal rendelkezik. A CMake bináris fájljait a GitHubon található CMake-adattár Microsoft ágáról szerezheti be. Nyissa meg ezt a lapot, és töltse le a Linux-gép rendszerarchitektúrájának megfelelő verziót, majd jelölje meg végrehajthatóként:

      wget <path to binary>
      chmod +x cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh
      
    • Megtekintheti a szkript futtatásának lehetőségeit a következővel --help: . Javasoljuk, hogy a -prefix opciót használja a telepítéshez a /usr elérési úton, mert a /usr/bin az az alapértelmezett hely, ahol a Visual Studio a CMake-t keresi. Az alábbi példa a Linux-x86_64 szkriptet mutatja be. Szükség szerint módosítsa, ha másik célplatformot használ.

      sudo ./cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh --skip-license --prefix=/usr
      
  • A Git for Windows telepítve van a Windows-gépére.

  • Egy GitHub-fiók.

Nyílt forráskódú CMake-projekt klónozása a GitHubról

Ez az oktatóanyag a Bullet Physics SDK-t használja a GitHubon. Ütközésészlelést és fizikai szimulációkat biztosít számos alkalmazáshoz. Az SDK olyan végrehajtható mintaprogramokat tartalmaz, amelyek lefordíthatók és futtathatók anélkül, hogy más kódot kellene írniuk. Ez az oktatóanyag nem módosítja a forráskódot vagy a buildszkripteket. Első lépésként klónozza a Bullet3-adattárat a GitHubról azon a gépen, amelyen telepítve van a Visual Studio.

git clone https://github.com/bulletphysics/bullet3.git
  1. A Visual Studio főmenüjében válassza a Fájl > megnyitása > CMake lehetőséget. Lépjen a CMakeLists.txt letöltött bullet3-adattár gyökerében található fájlra.

    Képernyőkép a Visual Studio menüjéről, amelyen a Fájl > Megnyitás > C Make látható. Még nincs megnyitva mappa. Ez csak a menü megnyitva erre a pontra.

    Amint megnyitja a mappát, a mappaszerkezet láthatóvá válik a Megoldáskezelőben.

    Képernyőkép a Megoldáskezelő ablakáról Mappanézet módban. Megjeleníti a projekt tartalmát (fájlokat és mappákat), és a CMakeLists.txt ki van emelve.

    Ez a nézet pontosan azt mutatja meg, hogy mi van a lemezen, nem logikai vagy szűrt nézetet. Alapértelmezés szerint nem jeleníti meg a rejtett fájlokat.

  2. A mappa összes fájljának megtekintéséhez válassza az Összes fájl megjelenítése gombot.

    Képernyőkép a Megoldáskezelő ablakáról, amelyen az Összes fájl megjelenítése gomb van kiemelve. Ez a gomb a megoldáskezelő ablakának tetején, jobbra helyezkedik el.

Váltás célnézetre

A CMake-t használó mappa megnyitásakor a Visual Studio automatikusan létrehozza a CMake-gyorsítótárat. A művelet a projekt méretétől függően eltarthat néhány percig.

  1. A Kimeneti ablakban válassza a Kimenet megjelenítése lehetőséget, majd válassza a CMake lehetőséget a gyorsítótár-létrehozási folyamat állapotának figyeléséhez. Ha a művelet befejeződött, a következőt írja: "Céladatok kinyerése kész".

    Képernyőkép a Kimenet ablakról. A

    A művelet befejezése után az IntelliSense konfigurálva lesz. Létrehozhatja a projektet, és hibakeresést végezhet az alkalmazáson. A Visual Studio mostantól megjeleníti a megoldás logikai nézetét a CMakeLists-fájlokban megadott célok alapján.

  2. A MegoldáskezelőMegoldások és mappák gombjával váltson A CMake-célok nézetre.

    Képernyőkép a Megoldáskezelő Megoldások és mappák gombjáról. Ki van jelölve, és megjelenik egy legördülő lista a c:\projects\bullet3 lehetőséggel, és egy másik lehetőség a CMake Targets Nézethez, amely ki van választva.

    Így néz ki ez a nézet a Bullet SDK-hoz:

    Képernyőkép a Megoldáskezelő CMake-célok nézetéről. Tartalmaz egy BULLET_PHYSICS Project nevű bejegyzést, amely olyan bejegyzéseket tartalmaz, mint a App_BasicExample (végrehajtható), App_ExampleBrowser (végrehajtható) stb.

    A Célnézet intuitívabb képet nyújt arról, hogy mi található ebben a forrásbázisban. Láthatja, hogy egyes célok könyvtárak, míg mások futtathatók.

  3. Bontsa ki a csomópontot a CMake Targets nézetben a forráskódfájlok megtekintéséhez, bárhol is legyenek ezek a fájlok a lemezen.

Adj hozzá egy explicit Windows x64-Debug konfigurációt

A Visual Studio létrehoz egy alapértelmezett x64-Hibakeresési konfigurációt a Windowshoz. A konfigurációk segítségével a Visual Studio megérti, hogy milyen platformcélt fog használni a CMake-hez. Az alapértelmezett konfiguráció nem jelenik meg a lemezen. Amikor explicit módon hozzáad egy konfigurációt, a Visual Studio létrehoz egy CMakeSettings.jsonnevű fájlt. Az összes megadott konfiguráció beállításai fel lesznek töltve.

  1. Adjon hozzá egy új konfigurációt. Nyissa meg a Konfiguráció legördülő menüt az eszköztáron, és válassza a Konfigurációk kezelése lehetőséget.

    Képernyőkép az eszköztár Konfiguráció legördülő menüjéről. Konfigurációk kezelése... van kiválasztva.

    Megnyílik a CMake-beállítások szerkesztője . Új konfiguráció hozzáadásához válassza a szerkesztő bal oldalán található zöld pluszjelet. Megjelenik a Konfiguráció hozzáadása a CMakeSettingshoz párbeszédpanel:

    Képernyőkép a Konfiguráció hozzáadása a CMakeSettings-hoz párbeszédpanelről. Olyan bejegyzésekkel rendelkezik, mint a Linux-Debug, x86-Debug. Az x64-Hibakeresés lehetőség van kiválasztva.

    Ez a párbeszédpanel a Visual Studio összes konfigurációját, valamint a létrehozott egyéni konfigurációkat jeleníti meg. Ha továbbra is egy x64-Debug konfigurációt szeretne használni, azt adja hozzá elsőként. Válassza az x64-Debug lehetőséget, majd a Kiválasztás gombot. A Visual Studio létrehozza a CMakeSettings.json fájlt egy x64-Debug konfigurációval, és menti a lemezre. A konfigurációkhoz bármilyen nevet használhat, ha közvetlenül a CMakeSettings.json-ben módosítja a névparamétert.

Töréspont beállítása, buildelés és futtatás Windows rendszeren

Ebben a lépésben hibakeresést hajtunk végre egy példaprogramban, amely bemutatja a Bullet Physics könyvtárat.

  1. A Megoldáskezelőben válassza az AppBasicExampleGui lehetőséget, és bontsa ki.

  2. Nyissa meg a fájlt BasicExample.cpp.

  3. Állítson be egy töréspontot, amelyet a futó alkalmazásra kattintva talál el. A kattintási eseményt egy segédosztályon belüli metódus kezeli. A gyors eljutás érdekében:

    1. Válassza ki azt a CommonRigidBodyBase, amelyből a BasicExample szerkezet származik. A 30-as vonal körül van.

    2. Kattintson a jobb gombbal, és válassza az Ugrás a definícióra parancsot. Most a CommonRigidBodyBase.h fejlécben van.

    3. A forrás fölötti böngészőnézetben látnia kell, hogy Ön a CommonRigidBodyBase-ben van. A jobb oldalon kiválaszthatja a megvizsgálandó tagokat. Nyissa meg a legördülő menüt, és válassza ki mouseButtonCallback, hogy eljusson a függvény definíciójához a fejlécben.

      Képernyőkép a Taglista eszköztár legördülő listájáról a szerkesztőablakban. Felsorolja az olyan függvényeket, mint a getRayTo(in x, int y). Az egérgomb visszahívási metódusa ki van emelve.

  4. Helyezzen egy töréspontot a függvény első sorára. A rendszer akkor kapja meg a találatot, ha az alkalmazás ablakában egy egérgombra kattint, amikor a Visual Studio hibakeresője alatt fut.

  5. Az alkalmazás elindításához válassza az eszköztár indítási legördülő menüjét. Ez az, amelyen a zöld színjátszás ikonja a "Select Startup Item" (Indítási elem kiválasztása) felirat látható. A legördülő menüben válassza a AppBasicExampleGui.exelehetőséget. A végrehajtható név ekkor megjelenik az indítási gombon:

    Képernyőkép a Visual Studio eszköztár indítási legördülő menüjéről. AppBasicExampleGui.exe van kiválasztva, de más lehetőségek is láthatók, például App_ExampleBrowser.exe, App_HelloWorld.exeés mások.

  6. Válassza a kilövés gombot az alkalmazás és a szükséges függőségek létrehozásához, majd indítsa el a Visual Studio hibakeresőjével. Néhány pillanat múlva megjelenik a futó alkalmazás:

    Képernyőkép a futó alkalmazásról. Színes blokkok gyűjteménye egy sárga síkon.

  7. Vigye az egeret az alkalmazásablakba, majd kattintson egy gombra a töréspont aktiválásához. A töréspont visszahozza a Visual Studiót az előtérbe, és a szerkesztő megjeleníti azt a sort, ahol a végrehajtás szünetel. Megvizsgálhatja az alkalmazásváltozókat, objektumokat, szálakat és memóriát, vagy interaktívan végiglépkedhet a kódon. Válassza a Folytatás lehetőséget az alkalmazás folytatásához, majd a szokásos módon való kilépéshez. Vagy állítsa le a végrehajtást a Visual Studióban a leállítás gombbal.

Linux-konfiguráció hozzáadása és csatlakozás a távoli géphez

  1. Adjon hozzá egy Linux-konfigurációt. Kattintson a jobb gombbal a CMakeSettings.json fájlra a Megoldáskezelő nézetben, és válassza a Konfiguráció hozzáadása lehetőséget. Ugyanaz a Konfiguráció hozzáadása a CMakeSettingshoz párbeszédpanel jelenik meg, mint korábban. Ezúttal válassza a Linux-Hibakeresés lehetőséget, majd mentse a CMakeSettings.json fájlt (ctrl + s).

  2. Visual Studio 2019 16.6-os vagy újabb verzió Görgessen le a CMake-beállítások szerkesztőjének aljára, és válassza a Speciális beállítások megjelenítése lehetőséget. Válassza a Unix Makefiles elemetCMake-generátorként, majd mentse a CMakeSettings.json fájlt (ctrl + s).

  3. Válassza a Linux-Hibakeresés lehetőséget a konfigurációs legördülő menüben.

    Képernyőkép az indítási konfiguráció legördülő listáról. A látható lehetőségek a következők: x64-Debug, Linux-Debug és Manage Configurations.

    Ha első alkalommal csatlakozik Linux rendszerhez, megjelenik a Csatlakozás távoli rendszerhez párbeszédpanel.

    Képernyőkép a Visual Studio Connect to Remote System párbeszédpanelről.

    A párbeszédpanelen a gazdagép neve, a port, a felhasználónév, a hitelesítési típus és a jelszó mezői jelennek meg. Az összes mező üres, kivéve, ha a port értéke 22, a hitelesítési típus pedig jelszó.

    Ha már hozzáadott egy távoli kapcsolatot, megnyithatja ezt az ablakot az Eszközök > beállításai > platformfüggetlen > kapcsolatkezelőben való navigálással.

  4. Adja meg a linuxos gép kapcsolati adatait , és válassza a Csatlakozás lehetőséget. A Visual Studio hozzáadja a gépet a(z) CMakeSettings.json a Linux-Debug alapértelmezett kapcsolatként. Emellett lekéri a fejléceket a távoli gépről, így a távoli kapcsolathoz tartozó IntelliSense-t kap. Ezután a Visual Studio elküldi a fájlokat a távoli gépre, és létrehozza a CMake-gyorsítótárat a távoli rendszeren. Ezek a lépések a hálózat sebességétől és a távoli gép teljesítményétől függően eltarthatnak egy ideig. Tudja, hogy ez akkor fejeződik be, ha a CMake kimeneti ablakban megjelenik a "Céladatok kinyerése kész" üzenet.

Töréspont beállítása, buildelés és futtatás Linuxon

Mivel ez egy asztali alkalmazás, további konfigurációs információkat kell megadnia a hibakeresési konfigurációhoz.

  1. A CMake Targets nézetben kattintson a jobb gombbal az AppBasicExampleGui elemre, és válassza a Hibakeresés és a Beállítások indítása lehetőséget a rejtett .vs almappában található launch.vs.json fájl megnyitásához. Ez a fájl helyi a fejlesztői környezetben. Ha be szeretné jelentkezni, és menteni szeretné a csapatával, áthelyezheti a projekt gyökerébe. Ebben a fájlban egy konfiguráció lett hozzáadva az AppBasicExampleGui-hoz. Ezek az alapértelmezett beállítások a legtöbb esetben működnek, de itt nem. Mivel ez egy asztali alkalmazás, meg kell adnia néhány további információt a program elindításához, hogy megjelenjen a Linux-gépen.

  2. A linuxos gépen található környezeti változó DISPLAY értékének megkereséséhez futtassa ezt a parancsot:

    echo $DISPLAY
    

    Az AppBasicExampleGui konfigurációjában található egy "pipeArgs" paramétertömb. A következő sort tartalmazza: "${debuggerCommand}". Ez a parancs indítja el a gdb a távoli gépen. A Visual Studiónak a parancs futtatása előtt exportálnia kell a kijelzőt ebbe a környezetbe. Ha például a megjelenítés értéke az :1, módosítsa a sort az alábbiak szerint:

    "export DISPLAY=:1;${debuggerCommand}",
    
  3. Indítsa el és hibakeresést végezhet az alkalmazáson. Nyissa meg az Indítási elem kiválasztása legördülő menüt az eszköztáron, és válassza az AppBasicExampleGui lehetőséget. Ezután válassza a zöld lejátszás ikont az eszköztáron, vagy nyomja le az F5 billentyűt. Az alkalmazás és függőségei a távoli Linux-gépre épülnek, majd a Visual Studio hibakeresővel vannak elindítva. A távoli Linux-gépen egy alkalmazásablaknak kell megjelennie.

  4. Vigye az egeret az alkalmazásablakba, és kattintson egy gombra. A töréspontot eltalálták. A programvégrehajtás szünetel, a Visual Studio visszatér az előtérbe, és megjelenik a töréspont. Egy Linux-konzolablaknak is meg kell jelennie a Visual Studióban. Az ablak kimenetet biztosít a távoli Linux-gépről, és stdin számára is fogadni tudja a bemenetet. Mint minden Visual Studio-ablakot, oda helyezheti, ahol szeretné látni. Pozíciója a jövőbeli munkamenetekben is megmarad.

    Képernyőkép a Visual Studio Linux konzolablakáról.

    Az ablak kimenete azt jelzi, hogy a C11 függvények a dlopen/dlsym használatával dinamikusan betöltve megfelelők, létrejött egy GL 3.0-környezet, és a közvetlen GLX renderelési környezetet sikeresen beállították és jelenleg használatban van. Az ablakban különböző információk találhatók a GL_VENDOR, GL_VERSION, GL_SHADING_LANGUAGE_VERSION és további verziókról.

  5. Megvizsgálhatja az alkalmazás változóit, objektumait, szálait, memóriáját, és interaktívan végiglépkedhet a kódon a Visual Studióval. Ezúttal azonban a helyi Windows-környezet helyett egy távoli Linux-gépen végzi el az egészet. Választhatja a Folytatás lehetőséget, hogy az alkalmazás a szokásos módon folytatódjon és kilépjen, vagy kiválaszthatja a leállítás gombot, ahogyan a helyi végrehajtás esetén is.

  6. Tekintse meg a Hívásverem ablakot, és nézze meg a x11OpenGLWindow hívásokat, amióta a Visual Studio elindította az alkalmazást Linuxon.

    A Visual Studio Call Stack ablaka, amelyen a Linux-hívásverem látható.

    A hívás verem megjeleníti a töréspontot a CommonRigidBodyBase::mouseMoveCallback metóduson, és az azt megelőző hívásokat, mint például az OnMouseMove, X11OpenGLWindow::pumpMessage stb.

A tanultak

Ebben az oktatóanyagban egy kódbázist klónozott közvetlenül a GitHubról. Módosítás nélkül készített, futtatott és hibakeresést végzett a Windowsban. Ezután ugyanazt a kódbázist használta kisebb konfigurációs módosításokkal egy távoli Linux-gépen való buildeléshez, futtatáshoz és hibakereséshez.

Következő lépések

További információ a CMake-projektek konfigurálásáról és hibakereséséről a Visual Studióban: