Hlavní navigace

SDL: Hry nejen pro Linux (2)

Michal Turek 1. 3. 2005

Ve druhé části série si ukážeme, jak nainstalovat SDL, a dále budou uvedeny "step-by-step" návody na vytvoření SDL projektů v gcc, MS Visual C++ a Dev-C++.

Instalace SDL

Jak už bylo zmíněno na konci minulého dílu, v linuxových distribucích bývá SDL standardně přítomno, ale pravděpodobně bude nutné doinstalovat balíčky pro vývoj (devel). U jiných operačních systémů lze při požadavku na nejnovější verzi či při ruční kompilaci stahovat z download stránky webu SDL.

V Linuxu se instalace ze zdrojových kódů provádí klasicky pomocí ./configure; make; make install, ve Windows je nejjednodušší cestou vzít předkompilovanou dynamickou knihovnu SDL.dll a zkopírovat ji buď do adresáře C:\Windows\Sys­tem32\, nebo ke každému vytvářenému projektu zvlášť. Ať už používáte jakýkoli operační systém, nikdy byste neměli zapomenout přiložit k vašemu projektu také informační soubor README-SDL.txt.

Ukázkový program

Vzhledem k tomu, že se při vytváření nového programu začíná vždy založením projektu, budeme tak postupovat i my. Na popis zdrojového kódu se však vzhledem k místu nedostane, vše bude probráno až v následujících dílech.

Velice jednoduchý ukázkový program vytvoří prázdné okno a poté bude čekat na stisk klávesy ESC, tím se ukončí. Nic extra efektního, ale aspoň budeme mít kontrolu, že jsme SDL dokázali zprovoznit.

Screenshot ukázkového programu

gcc

Pokud je SDL nainstalováno, měl by jít zdrojový kód zkompilovat například následovně

$ gcc -o sdl02 sdl_02.cpp `sdl-config --cflags --libs`

Výše uvedený příkaz sdl-config se nainstaloval automaticky s SDL a slouží především k určení cest k hlavičkovým souborům a knihovnám. Před vlastním spuštěním gcc bude obsah části ve zpětných apostrofech proveden shellem a nahrazen do výsledné formy (na mém systému).

$ gcc -o sdl02 sdl_02.cpp -I/usr/include/SDL -D_REENTRANT
-L/usr/lib -lSDL -lpthread

Mimochodem, všechny volby sdl-config lze získat spuštěním bez parametrů

$ sdl-config
Usage: sdl-config [--prefix[=DIR]] [--exec-prefix[=DIR]]
[--version] [--cflags] [--libs] [--static-libs]

Visual C++ (6.0)

Aby IDE vědělo, kde má hledat hlavičkové a knihovní (LIB) soubory, je nejprve nutné přidat v menu Tools → Options → Directories absolutní cesty k podadresářům include a lib z rozbaleného archivu SDL-devel-1.2.8-VC6.zip.

Dále se vytvoří nový Win32 Application projekt popř. Win32 Console Application projekt, pokud je požadavkem i výstup do konzole. V menu Project → Settings → C/C++ → Code Generation se v listboxu Use run-time library navolí Debug Multithreaded DLL (pro Debug verzi programu) nebo Multithreaded DLL (pro Release verzi programu). To se musí vykonat u každého nově vytvářeného projektu, jinak jeho kód nepůjde zkompilovat.

Zbývá přilinkovat knihovny SDL.lib a SDLmain.lib, to lze udělat buď přes nabídky ve vlastnostech projektu, nebo připsáním následujících dvou řádků ke kódu.

#pragma comment (lib, "SDL.lib")
#pragma comment (lib, "SDLmain.lib")

Bloodshed Dev-C++ (4.9.9.1)

Podobně jako u Visual C++ je nutné v menu Nástroje → Nastavení kompilátoru → Adresáře nastavit cesty k hlavičkových a knihovním souborům. Na tomto místě je nutné poznamenat, že devel archiv pro Visual C++ je v Dev-C++ nepoužitelný, pro něj slouží SDL-devel-1.2.8-mingw32.tar.gz. Dynamická knihovna SDL.dll je už ale samozřejmě společná.

Po vytvoření konzolového projektu se v menu Projekt → Vlastnosti projektu → Parametry přidají knihovny -lmingw32, -lSDLmain a -lSDL (v tomto pořadí). V případě, že bude na konec seznamu přidáno i -mwindows, nebude se zároveň s aplikací zobrazovat konzolové okno.

Jiné operační systémy a kompilátory

K jiným operačním systémům ani vývojovým prostředím nemám bohužel v současné době přístup. Pokud v nich máte se zprovozněním SDL problémy, mohl by vám pomoci SDL FAQ nebo klasicky Google. Také můžete zkusit diskusi níže, třeba se najde někdo chytrý…

Makefile pro tyto články

Aby se nemuseli permoníci, co nosí pakety po síti, příliš namáhat, budou kompletní projekty pro všechna testovaná vývojová prostředí přiloženy pouze u tohoto článku. V příštích dílech bude přikládán pouze jednoduchý ručně psaný Makefile, který může při více souborech se zdrojovými kódy hodně věcí zjednodušit. Celý program se pak zkompiluje pouze zapsáním jediného make do příkazové řádky. Vývojová prostředí obsahují funkci přidání souborů do projektu, takže by se u nich neměly vyskytnou žádné větší problémy.

Download

Pokračování

Příště se v první části článku seznámíme s konvecemi názvů SDL funkcí a s SDL datovými typy a v druhé části se konečně začneme věnovat popisu knihovny z programátorského hlediska.

Našli jste v článku chybu?

1. 3. 2005 0:25

v Dev-C++ se da nejjednoduseji nainstalovat SDL z menu Nastroje\Zjistit updaty\server devpaks.org

1. 3. 2005 14:22

Lembloud (neregistrovaný)
Ondřeji, Ondřeji, mě nový design nevadí, sice bych chtěl zprávičky jinam, ale to je tak všechno. Ale obsah tohoto a předchozího článku je tak na jednu delší větu a kratší souvětí. Ale proč? Autor nemá dost času? Nebo o tom téměř nic neví, tak pilně studuje a rovnou píše co se dozvěděl? Nebo z toho hodlá vytřískat co nejvíc peněz? V první části seriálu o SVGAlib bylo 3 x více informací. Pokud se tu budou objevovat podobné články častěji, tak to teprv bude konec roota, ne nějaký design, na který m…
DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře