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.

Nincsenek megjegyzések:

Megjegyzés küldése