Instalacja biblioteki SFML 2.x pod linuksem i Code::Blocks

Czym jest biblioteka SFML

Biblioteka SFML jest jedną z bibliotek graficznych, która zdobywa ostatnio coraz większą popularność wśród programistów  C++. Ma dość spore możliwości i jest stosunkowo łatwa do nauczenia.  Biblioteka ta jest przeznaczona do pisania gier ale nie tylko, gdyż z powodzeniem możesz wykorzystać ją do ożywienia innych swoich programów. Programy pisane z wykorzystaniem jej są przenośne, biblioteka występuje w wersji dla Linuksa, M$ Windows oraz Mac OS X w postaci już skompilowanej i gotowej do instalacji na twoim systemie operacyjnym, a także w postaci otwartych kodów źródłowych, które sam możesz skompilować na platformie, której używasz.

Artykuł ten nie jest wstępem do kursu SFML (tutaj mogę polecić http://cpp0x.pl/kursy/Kurs-SFML-2-x-C++/460 oraz http://szymonsiarkiewicz.pl/poradniki/sfml-kurs-podstawowy/sfml-kurs-dla-poczatkujacych/ a także manuala tej biblioteki,  z których sam się uczę i korzystam) W dziale, w którym się znajduje niniejszy artykuł, zamieszczał będę przykładowe zadania, które wykorzystują tą bibliotekę i które mogą skutecznie wspomóc Twoją naukę.

Jak najszybciej zainstalować SFML pod Linuksem i skonfigurować w Code::Blocks

Instalacja SFML w systemach z rodziny Windows jest dość dobrze opisana na stronie producenta, jednak problemem może być jej uruchomienie pod linuksem, jeśli korzystamy z opisów w sieci, a nie jesteśmy specjalistami od tego systemu operacyjnego. W niniejszym artykule pokarzę jak uruchomić ją na systemie operacyjnym Linuks Mint/Ubuntu i jak podpiąć ją do Code::Blocks.

Instalacja SFML w Linuks Mint/Ubuntu

  • Pobierz gotową, skompilowaną już paczkę, przeznaczoną dla linuksa z tego linku SFML for Linux
  • Pobraną paczkę rozpakuj do katalogu /home/twoja-nazwa-użytkownika/SMFL
  • Po rozpakowaniu paczki, w zależności od wersji SFML zostaną stworzone katalogi coś w rodzaju /home/twoja-nazwa-użytkownika/SFML/SFML-2.4.2-linux-gcc-64-bit/SFML-2.4.2, w których znajdą się kolejno katalogi /include, /lib, oraz /share
  • Zaloguj się na konto root i przekopiuj zawartość z katalogu ./include do /usr/include
  • Następnie przekopiuj zawartość z katalogu ./lib do /usr/lib
  • Na koniec przekopiuj zawartość z trzeciego katalogu z wspomnianych ./share do /usr/share

Teraz zajmiemy się podpięciem biblioteki SFML do Code:Blocks

Opis dotyczy Code::Blocks w wersji 16.01, jeśli posiadasz wcześniejszą wersję, zaktualizuj go najlepiej do tej, której niniejszy opis się tyczy.

  • Uruchom Code::Blocks
  • Przejdź do Settings->Compiler, a następnie kliknij w zakładkę Linker Settings
  • W polu Other linker options: wpisz

-lsfml-audio
-lsfml-graphics
-lsfml-network
-lsfml-system
-lsfml-window

  • Przejdź teraz do zakładki Compiler Settings i następnie poniżej do zakładki #defines
  • W poniższym polu wpisz

SFML_STATIC

  • Zatwierdź wszystkie zmiany klikając w przycisk OK

Biblioteka powinna być już prawidłowo podpięta od tej pory i programy powinny się już kompilować poprawnie, ale aby to sprawdzić stwórz nowy projekt i wklej poniższy kod

#include <SFML/Graphics.hpp>
#include <cmath>

int main()
{
sf::RenderWindow okno( sf::VideoMode( 320, 240 ), “Kurs SFML 2.0 – http://cpp0x.pl” );
sf::Clock stoper;
while( okno.isOpen() )
{
sf::Event event;
while( okno.pollEvent( event ) )
{
if( event.type == sf::Event::Closed )
okno.close();

} //while
okno.clear();

sf::CircleShape ksztalt( std::sin( stoper.getElapsedTime().asSeconds() ) * okno.getSize()./ 8 + okno.getSize()./ 4 );
ksztalt.setOrigin( sf::Vector2f( ksztalt.getRadius(), ksztalt.getRadius() ) );
ksztalt.setPosition( okno.getSize()./ 2.0f, okno.getSize()./ 2.0f );
ksztalt.setFillColor( sf::Color::Yellow );
okno.draw( ksztalt );

okno.display();
} //while
return 0;
}

Kod nie jest mojego autorstwa i pochodzi ze strony http://cpp0x.pl/kursy/Kurs-SFML-2-x-C++/Instalacja-i-konfiguracja/Test-dzialania-biblioteki-SFML-2-0/462

Skompiluj kod i uruchom program wciskając klawisz F9. Jeśli wszystko jest jak należy powinieneś zobaczyć okienko z animowanym żółtym kołem, jeśli tak nie jest, wróć na początek tego artykułu i wykonaj raz jeszcze dokładnie wszystkie kroki.

Uwagi końcowe

  • Do działania tej biblioteki wymagana jest 64bitowa wersja systemu i GCC (g++). Najlepiej jak zaktualizujesz Swoje GCC do najnowszej wersji według mojego opisu znajdującego się na stronie https://oduk.pl/zaktualizowac-kompilator-gcc-systemem-linuks-windows/
  • Niniejszy artykuł dotyczy SFML 2.x, istnieje jeszcze starsza wersja tej biblioteki SFML 1.x, a programy pisane dla starszej wersji tej biblioteki nie będą się kompilowały. Zwróć więc szczególną uwagę na to, z jakiego ewentualnie kursu korzystasz i dla jakiej wersji SFML jest on przeznaczony oraz ewentualnie, dla której wersji biblioteki jest napisany kod, który próbujesz skompilować.
  • W Linuks Mint i Ubuntu istnieje gotowa paczka biblioteki SFML, możesz ją zainstalować, jednak zwróć uwagę, że prawdopodobnie nie będzie ona w najnowszej wersji, więc i tak warto ją pobrać ze strony producenta i zainstalować ręcznie. Jeśli zdecydujesz się na instalację z paczki Minta lub Ubuntu, to sprawdź dokładnie, czy jest to biblioteka w wersji 2.x.
  • Podczas pierwszej kompilacji programu korzystającego z SFML, tworzone są dwa katalogi w projekcie o nazwie ./bin oraz /obj, jeśli miałeś problem i po jego usunięciu program dalej sięnie kompiluje, usuń wspomniane katalogi. Program przy powtórnej kompilacji utworzy je na nowo z poprawną zawartością
  • Gotowa binarka programu po kompilacji, znajduje się w katalogu ./bin/Debug twojego projektu
  • Sporo czasu spędziłem walcząc z tą biblioteką pod linuksem, więc postaram się odpowiedzieć na Twoje ewentualne pytania i problemy przy jej uruchomieniu. Zwróć jednak uwagę, że jestem początkującym programistą, który nie zbyt pomoże ci w rozwiązaniu problemów natury programistycznej. W takim przypadku pytania zadawaj najlepiej na forach związanych z programowaniem w C++ lub tyczące się samej biblioteki SFML.

Dodaj komentarz

one + twelve =