A következő címkéjű bejegyzések mutatása: shell. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: shell. Összes bejegyzés megjelenítése

2011. febr. 4.

Verziókezelő rendszerekről

Mivel egyre komolyabb projekteket kezdek (pl. most a szakdolgozatom), és már régebben is olvastam, hogy milyen jó dolog is ez, valamilyen verziókezelő rendszer keresésébe kezdtem.

Ebben is nehezítette a dolgomat, hogy "ökörh*gyoztában", vagyis 4-5 helyen is, 2-féle platformon fejlesztek mindenfélét, és csak a saját gépemen vannak kielégítő jogosultságaim és fejlesztői környezetem. Mindenhol máshol pendriveon IDE hurcolás+windows+mezei júzer.

Szóval ilyen rendszerekből van ugye kétféle: a központosított és az elosztott. Előbbiből a Subversion (svn), utóbbiból a git és a Mercurial (hg) jött szóba. Nekem már csak elvből is jobban tetszett az elosztott, meg saját (svn) szervert nem akarok mindenhol indítani csak ezért, a netet meg nem érem el mindig. Csak majdnem.

Maradt tehát a git és a hg. Az előbbi azért lenne jó, mert a "Nagyok" csinálták és használják, nyilván profi; de fele Perl, fele Shell, fele meg Linux-C, szóval windowson csak Cygwin-el vagy MSYS-el menne, amiből az utóbbi még csakcsak, de ha nem muszáj, azt se. Lévén a hg meg Python, az megy mindenhol. Megy pendrive-ról is (csak két sort kell átírni valami konfigfájlba, azt is a bugyuta meghajtókat-betűvel-jelölős, relatív-útvonalat-nem-ismerős rendszer miatt...)

Félig kizárásos alapon maradt tehát a Mercurial.

Online "backupként" pedig ahogy az svn-nek a SourceForge (jó, ez itt inkább A repó), a gitnek a github, úgy van a Mercurialnak is a BitBucket.

Elégedett vagyok vele, sokszor hasznos a revert, meg két év múlva jó lesz nevetni a changelogon...

Tanulság: DVCS-t a népnek!

Ui.: Hogy miért nem Bazaar (bzr) meg a Launchpad? Nem tudom, valahogy elkerülte a figyelmemet akkor. Elsőre nem találok benne kivetnivalót. Sőt. De már mindegy. Majd talán...

2010. szept. 5.

Többplatformos fejlesztőkörnyezet

Amint ígértem, problémamegoldás.

A lényeg: tudni kell a kódot szerkeszteni, lefordítani és a programot futtatni 2 platformon, ráadásul winen penrájvról, telepítési jogok nélkül.

CodeBlocks Windowsra:
Egész jó cross-platform IDE, sok fordítót tud alkalmazni.
Lehet belőle beépített MinGW-set szedni, ami viszont egyrészt régi, másrészt valamilyen TDM kiadás, ami nem kompatibilis az előre fordított SFML libekkel.
(Az meg nekem kell, mert jó.)
Más gond szerintem nincs vele, tehát használható, ha valakinek nem kell előre fordított library, vagy fordít belőle sajátot. Akinek kell SFML, de nem fordít sajátot, annak letöltendő az épp pár napja kiadott installer mingw 4.5-höz, ami jó SFML-hez.

Ezt feltelepítve és az eredménnyel a CodeBlocks MinGW könyvtárát felülírva meg is van a frissített, "sima kiadású" fordító az IDE-be.

Megkérdezi, hogy MSYS-t telepítsen-e. Ez remek megoldás lenne, mert így nem is annyira kell a CodeBlocks, hanem egyszerű, jól megszokott Linux shellt kapunk win alatt - ott magától értetődő a make használata -, de az fstab fájlt igazítani kell a pendrive aktuális betűjeléhez, (csak a mingw könyvtárát kell becsatolni, de relatív útvonalat nem lehet megadni) és ha jól tudom, plusz egy dll függőséget is ad, ezért nekem marad a C::B. Hogy azt a dll-t lehet-e helyettesíteni statikus linkeléssel, nem próbáltam.További hátrány, hogy bár Notepad++ remekül alkalmazható lenne kódolásra, nem találtam módot egygombos fordításra/futtatásra, illetve azt is igazítani kellett volna a betűjelhez.

Továbbá beállítandó a CodeBlocks-ban a fordító binárisainak lelőhelye, az executables résznél a make-t meg ki kell javítani a mingw32- kezdetűre. Más betűjelre hurcolva itt nyomkodni kell majd az Autodetect-et. (hát... ez MSYS-nél is gond volt... viszont itt csak egy gombnyomás!)
Saját Makfile használatára - mert az nekünk jó - van egy külön opció a projekt beállításaiban, és a bizonyos körülmények között futtatandó parancsok/targetek (pl. egy fájl fordítása, teljes pucolás, stb.). Ezek testre/ízlésre/Makefile-ra szabandók.

A Makefile-ban így lehetséges a platform megállapítása:
ifeq($(shell uname -s), Linux)
#ami linuxon kell
else
#ami windowson kell
endif

Amint lefordítjuk az első programot, átdobjuk haver gépére, látjuk, hogy dll kell neki. Ennek kiküszböléséhez a -static-libgcc opciót adjuk át a fordítónak (Makefile-ban), a MinGW/lib/gcc/4.5.0/libstdc++.dll.a, MinGW/lib/gcc/4.5.0/libstdc++.dll.a-gdb.py, MinGW/lib/gcc/4.5.0/debug/libstdc++.dll.a fájlokat pedig nevezzük át, hogy ne találja meg, így kénytelen lesz statikusan linkelni. (azt hiszem az MSYS még ezen kívüli dll Linuxon meg úgyse nagyon szokás statikusan linkelni a dolgokat.

Már csak azért, mert szeretem az egy exe-s projekteket.
Azt mondják, "Amit megtanulsz, azt nem vehetik el tőled.".
Szerintem "Amit statikusan linkelsz, az nem fog hiányozni az exe mellől.".
Akinek ez nem fontos, másolgassa csak az exe mellé a dll-eket, amikért sír.

Linux:
Mivel jelen esetben nem kell hurcolni pendrájvon, a lehetőségek végtelenek. Nem mintha egyébként nem lennének azok, de így meg annál is inkább.
Amit én használok, az gedit, három "külső eszközzel", amik sorban az all, run és clean targetekkel futtatják make-t az aktív dokumentum könyvtárában egy billentyűleütésre. Szintaxis-kiemelést is tud, ennél több nem is kell.