Sziasztok!
Tudnátok kérlek segíteni, hogy miképp tudnék C++ projekteket Ubuntu Linux-on könnyen fordítani?
Hallottam már a CMake-ről, illetve a TravisCI-ról is, de az én tudatomban még a './configure && make && make install' van .
Milyen fordítók vannak Linuxra? GCC, clang++? Mind ugyanazt tudja?
CMake mire való? Könnyű használni? C++ projektet lehet debug-ban soronként is futtatni?
IDE kell a fordításhoz, hogy terminálban a legkönnyebb?
Makefile és EMakefile között mik a különbségek?
Cpp, hpp fájlok micsodák? Melyik a 'main' . cpp ahonnan indul a program?
Függőségeket hogyan tudom feltérképezni, és telepíteni?
Példaképpen ilyen C++ programot szeretnék fordítani :
https://github.com/OpenFodder/openfodder/tree/master/Source
Előre is köszönöm!
Hozzászólások
Senki nem tud/akar segíteni?
korán van?
amit linkeltél ahhoz make és llvm kell.
--
GPLv3-as hozzászólás.
Október 17-én adtam fel :) Téli álmot alszanak a C++ guruk vagy mi ? :)
egyébként meg látom minden kell hozzá így második ránézésre de a travis megcsinálja neked.
--
GPLv3-as hozzászólás.
Regisztrálnom kell egy Travis fiókot és ott elindítani a fordítás majd kapok egy binárist?
Fizetős a Travis?
Talán egy kicsit sok kérdést tettél fel, és nekem az a tippem, hogy először el kéne olvasnod egy C++ könyvet, és csak aztán kérdezni. Amire röviden lehet válaszolni:
Ha csak lefordítani akarod, akkor nem kell IDE. Az IDE akkor jó, ha fejlesztesz, de akkor nagyon.
A make, cmake arra való, amit a neve sugall. Egy program, ami a függőségek alapján lefordítja a programodat. Kell neki egy szöveges fájl, pl. a meke-nak a Makefile ami leírja a függőségeket, ez alapján a make hívja a leíró fájl szerinti fordítót, linkert, vagy bármit, ami a fordításkor kell. A cmake egy kicsit bonyibb, de a lényeg ugyan ez.
A projekt, amit linkeltél, első ránézésre nem sok segítséget ad a fordításhoz. Ezt vagy megtalálod, vagy kitalálod, itt nem hiszem, hogy bárki segítene ebben.
Pontosan mit szeretnél? Miért?
Ha csak a linkelt programot szeretnéd használni, akkor ezt a repot (https://github.com/OpenFodder/openfodder) letöltöd, majd (ha telepítve van a
make
csomag) amake
parancs segít lefordítani.A
Makefile
úgy látom, Linux alatt használandó, azEMakefile
pedig Windows-on.A
make
parancs várhatólag hibákat fog adni, amelyek valószínűleg csomagok hiánya miatt lesz - ezeket telepíteni kell. Ha abban akadsz el, ide beírod a pontos hibaüzenetet, és valaki biztos segít majd.Egy foldert fellépve ott van a Makefile: https://github.com/OpenFodder/openfodder/blob/master/Makefile
A tipikus Makefile-okhoz képest mérten elég rövid és egyszerű. Cserébe nem kezeli a függőségeket, hanem mindent újrafordít mindig. Kisebb projektekhez én is ilyet szoktam csinálni.
Ebben látható, hogy clang++-szal fordít, ami gondolom van Ubuntun csomagban (nem használtam eddig).
A legelején a változók környékén kell még kurkászni, hogy az sdl2-config programnak fenn kell lennie, illetve az include libek fenn legyenek. Ezeket én úgy szoktam kikeresgélni, hogy a packages.ubuntu.com-on fájlnév szerint lehet keresni, hogy mi melyik csomagban van meg. Ritkán fordul elő, hogy valami nincs csomagban, ezek szerintem lesznek.
Tehát az algoritmus:
* A függőségeket telepíted (ezek tipikusan *-dev csomagok, amikben nem csak a bináris, de a headerek is benne vannak, hogy lehessen az adott libre fordítani)
* clang++-t telepíted
* make-t telepíted
* Belépsz a folderbe, ahol a Makefile van, és "make all"-t futtatsz.
* Ha valahol elakadsz, akkor kétségbeesetten guglizol és fórumozol :-)
IDE-be betölteni a programot és debuggolni is természetesen lehet, de most azt nem írom le.
> Milyen fordítók vannak Linuxra? GCC, clang++? Mind ugyanazt tudja?
Nem pont ugyan azt tudják, de a sima C/C++ projektek 95%-át mindkettővel le tudod fordítani
> CMake mire való? Könnyű használni? C++ projektet lehet debug-ban soronként is futtatni?
CMake forráskód buildeléshez használható, nem könnyű használni, de sima make-nél szerintem könnyebb. C++ projekteket debug módban soronként futtatni valamilyen IDE való (vagy VS Code editor akár, ezt javaslom ha kezdő vagy) egyes IDE-k felismerik a CMake projektleíró fájlokat és az alapján jól lehet menedzselni a kódot, fordítani, léptetni debug módban soronként
> IDE kell a fordításhoz, hogy terminálban a legkönnyebb?
Projekttől függ: kis részénél mindegy, kis részénél könnyebb IDE-ből (nagyobb androidos projektek, stb.) legtöbbnél könnyebb terminálból fordítani
> Makefile és EMakefile között mik a különbségek?
Passzolom
> Cpp, hpp fájlok micsodák? Melyik a 'main' . cpp ahonnan indul a program?
.cpp - általában sima forrás, függvények leírásai
.hpp - általában függvények definíciói (fejlécei) és egyben definíciói. Kezdőként mindegy, nagy pojekteknél ez lassabban fordul, mert akkor is objectté fordítják ha nem módosul
A main függvény bárhol lehet, keress rá a projekt könyvtárában pl. ezzel a paranccsal: "grep -r "main("
> Függőségeket hogyan tudom feltérképezni, és telepíteni?
* github readme-ben leírják és szerencsés esetben "sudo apt install libakármi-dev"
* fordítási hibánál kiírja, hogy mi kell vagy a build system (make, Cmake, stb.) kiíjra configure fázisnál hogy milyen library hiányzik
* végső esetben google a header fájlokra, amiket nem talál