Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: Piotr Szawdyński
Biblioteki C++

Konfiguracja SFML 2.0 (Code::Blocks)

[lekcja] Rozdział 3. Niniejszy rozdział opisuje proces konfiguracji biblioteki SFML 2.0 dla środowiska Code::Blocks 10.05 oraz Code::Blocks 12.11.
Pierwsza część procesu związanego z instalacją biblioteki SFML 2.0 została omówiona w rozdziale » Kurs SFML 2.0, C++ » Instalacja i konfiguracjaInstalacja biblioteki SFML 2.0 lekcja. Zapoznaj się z treścią wspomnianego rozdziału zanim rozpoczniesz proces konfiguracji biblioteki SFML 2.0.

Wprowadzenie

Proces konfiguracji projektu w Code::Blocks jest generalnie rzecz biorąc prawie taki sam jak w środowisku Visual C++. Zauważalnym problemem dla środowiska Code::Blocks jest jednak fakt, iż spora część deweloperów (w tym i ja) samodzielnie pobiera jakąś bliżej nieokreśloną wersję kompilatora, a następnie wykorzystuje go podczas tworzenia własnych aplikacji. Póki wszystko działa to problemu oczywiście nie ma, jednak ta cała dowolność, a czasami nawet konieczność wgrywania nowszego kompilatora powoduje, że pojawiają się nieoczekiwane problemy podczas konfiguracji bibliotek, które zostały skompilowane przez osoby trzecie. W konsekwencji oznacza to, że prawidłowe skonfigurowanie projektu w Code::Blocks nie gwarantuje nam poprawnego działania tworzonej aplikacji, jeżeli biblioteki linkowane do projektu zostały skompilowane inną wersją kompilatora niż ten, który obecnie posiadasz i używasz.

Niezgodność bibliotek SFML z posiadanym kompilatorem

Jeżeli jesteś szczęśliwym posiadaczem 'unikatowej' wersji kompilatora to wiedz, że z dużym prawdopodobieństwem będziesz musiał nadłożyć sobie pracy zanim zaczniesz się cieszyć biblioteką SFML 2.0. Pierwszą możliwą opcją jest po prostu wgranie tej samej wersji kompilatora, która została użyta do skompilowania bibliotek SFML 2.0. Drugą opcją jest zmiana środowiska na inne (np. Visual C++ 2008). Trzecią (i w sumie najlepszą) opcją jest samodzielna kompilacja bibliotek SFML ze źródeł, o ile koniecznie chcesz pozostać przy środowisku i kompilatorze, którego używasz. Wiedz jednak, że samodzielna kompilacja jakichkolwiek bibliotek ze źródeł rzadko kiedy idzie gładko i nawet doświadczeni programiści potrafią stracić do tego cierpliwość.

Kompilacja SFML 2.0 ze źródeł

Jeżeli czujesz potrzebę samodzielnej kompilacji ze źródeł to niestety będziesz musiał zadowolić się informacjami, jakie można znaleźć na stronie twórcy biblioteki SFML. Poradnik opisujący proces kompilacji biblioteki SFML 2.0 w języku angielskim znajduje się na następującej stronie: http://www.sfml-dev.org​/tutorials/2.0​/compile-with-cmake.php.

Tworzenie nowego projektu

Rozpocznijmy proces konfiguracji biblioteki SFML. Uruchom środowisko Code::Blocks, a następnie wybierz z menu pozycję File/New/Project.... Na ekranie ukaże Ci się okno dialogowe za pomocą którego tworzy się nowe projekty. W lewej części okna znajduje się drzewko wyboru. Wybierz na nim pozycję Projects. Po prawej stronie okna dialogowego znajduje się lista dostępnych szablonów projektów (większość dotyczy języka C++). Odszukaj, a następnie zaznacz szablon o nazwie Empty project, po czym zatwierdź wybór klikając przycisk Go. Na ekranie ukaże Ci się prosty kreator tworzenia projektów. Jeżeli masz świeżo zainstalowany Code::Blocks to pojawi Ci się ekran powitalny, w którym należy kliknąć po prostu przycisk Next. W kolejnym etapie zostaniesz poproszony o nadanie nazwy projektu oraz ścieżki, gdzie ma zostać utworzony projekt. Nadaj więc nazwę projektu (np. Kurs SFML) oraz określ ścieżkę na dysku zapisu projektu. Więcej zmian w ustawieniach kreatora nie należy wprowadzać, także kliknij przycisk Next, a następnie przycisk Finish. W wyniku przeprowadzenia powyższych kroków, utworzony został pusty projekt, który widoczny jest w panelu Managment. Włączenie i wyłączenie panelu Managment zostało opisane w kolejnym paragrafie.  

Tworzenie pliku main.cpp

Przed przystąpieniem do konfiguracji projektu warto dodać do niego plik z rozszerzeniem *.cpp. Wybierz więc z menu pozycję File/New/Empty file (skrót: CTRL+SHIFT+N). Na ekranie pojawi się okno dialogowe z pytaniem, czy chcesz dodać plik do aktywnego projektu. Kliknij przycisk Tak. W kolejnym oknie dialogowym nadaj plikowi nazwę main.cpp, a następnie zatwierdź wybór przyciskiem Zapisz. W kolejnym oknie dialogowym pojawią się dostępne tryby kompilacji. Zaznacz tryby kompilacji Debug oraz Release, a następnie zamknij okno zatwierdzając wprowadzone zmiany za pomocą przycisku OK. Otwórz następnie panel Managment (w menu View nosi on nazwę Manager). Panel ten można pokazywać i ukrywać przy pomocy skrótu klawiszowego SHIFT+F2. W górnej części panelu widoczne są trzy zakładki, tj. Projects, Symbols oraz Resources. Wybierz zakładkę Projects, w której znajduje się drzewko projektu. Jeżeli poprawnie przeprowadziłeś proces dodawania pliku do projektu to na drzewku w gałęzi Sources powinien pokazać się przed chwilą utworzony plik main.cpp. Otwórz plik main.cpp poprzez jego dwukrotne kliknięcie, a następnie wklej następujący kod źródłowy:
C/C++
int main()
{
    return 0;
}
Kod na chwilę obecną nie ma najmniejszego znaczenia, ale dzięki temu zawsze możesz sprawdzić czy projekt się kompiluje. Skrót CTRL+F9 kompiluje projekt.                       

Wejście w opcje projektu

Otwórz teraz panel Managment, wybierz w nim zakładkę Projects, kliknij prawym klawiszem na nazwie projektu, a następnie z rozwijanego menu wybierz pozycję Properties. Jeżeli projekt jest aktywny (czyli jest pogrubiony na drzewku widocznym w panelu Managment/Projects), opcje projektu można uruchomić wybierając z menu Project pozycję Properties. W wyniku przeprowadzenia powyższych kroków, na ekranie powinno pojawić się okno dialogowe opcji projektu. 

Wejście w opcje kompilacji danego projektu

Otworzenie okna zawierającego zbiór ustawień kompilacji dla projektu możliwe jest na dwa sposoby. Pierwszy z nich polega na otworzeniu okna opcji projektu. W górnej części otwartego okna dialogowego znajduje się kilka zakładek. Wybierz zakładkę Project settings, a następnie odszukaj na niej duży przycisk zatytułowany Project's build options.... Kliknięcie wspomnianego przycisku otworzy kolejne okno dialogowe z opcjami kompilacji jakie mają być używane dla wcześniej wybranego projektu. Okno zawierające opcje kompilacji dla projektu można również otworzyć bezpośrednio z menu Project, wybierając pozycję Build options.... W tym wypadku opcje kompilacji zostaną otworzone dla projektu, który jest aktywny tj. jest pogrubiony na drzewku w panelu Managment/Projects.   

Konfiguracja 'Compiler Directories'

Ustawienia omawiane w niniejszym paragrafie dotyczą okna dialogowego, zawierającego opcje kompilacji projektu. Zanim zaczniesz wprowadzać ustawienia zgodnie z opisem znajdującym się w niniejszym paragrafie, zaznacz konfigurację nadrzędną dla trybu Debug oraz trybu Release w otwartym oknie dialogowym (drzewko wyboru konfiguracji znajduje się w lewej części okna dialogowego).
Pierwszą rzeczą, jaką należy skonfigurować to katalogi, w których kompilator ma szukać plików nagłówkowych biblioteki SFML. W tym celu należy wybrać zakładkę Search directories, a w niej wybrać następnie kolejną zakładkę o nazwie Compiler. Po wybraniu zakładki Compiler, odszukaj w dolnej części okna przycisk zatytułowany Add, a następnie kliknij go (spowoduje to otwarcie nowego okna dialogowego). W nowo otwartym oknie dialogowym wpisz teraz ścieżkę do katalogu zawierającego pliki nagłówkowe biblioteki SFML. Jeżeli proces instalacji przeprowadzałeś zgodnie z pierwszym rozdziałem niniejszego kursu to wymagane pliki znajdują się w katalogu: C:\Projekty\Biblioteki\SFML 2.0\include. Po wpisaniu wspomnianej ścieżki zamknij okno dialogowe, klikając przycisk OK. Wprowadzone zmiany należy również zatwierdzić w otwartym oknie dialogowym opcji kompilacji projektu - to tego celu służy przycisk OK.   

[Code::Blocks] Konfiguracja 'Compiler Directories' dla biblioteki SFML 2.0
[Code::Blocks] Konfiguracja 'Compiler Directories' dla biblioteki SFML 2.0

Konfiguracja 'Linker Directories'

Ustawienia omawiane w niniejszym paragrafie dotyczą okna dialogowego, zawierającego opcje kompilacji projektu. Zanim zaczniesz wprowadzać ustawienia zgodnie z opisem znajdującym się w niniejszym paragrafie, zaznacz konfigurację nadrzędną dla trybu Debug oraz trybu Release w otwartym oknie dialogowym (drzewko wyboru konfiguracji znajduje się w lewej części okna dialogowego).
Kolejną rzeczą jaką należy skonfigurować to katalogi, w których kompilator ma szukać skompilowanych bibliotek, dostarczonych w paczce instalacyjnej SFML. W tym celu należy wybrać zakładkę Search directories, a w niej wybrać następnie kolejną zakładkę o nazwie Linker. Po wybraniu zakładki Linker, odszukaj w dolnej części okna przycisk zatytułowany Add, a następnie kliknij go (spowoduje to otwarcie nowego okna dialogowego). W nowo otwartym oknie dialogowym wpisz teraz ścieżkę do katalogu zawierającego skompilowane pliki biblioteki SFML (chodzi o pliki z rozszerzeniem *.a). Jeżeli proces instalacji przeprowadzałeś zgodnie z pierwszym rozdziałem niniejszego kursu to wymagane pliki znajdują się w katalogu: C:\Projekty\Biblioteki\SFML 2.0\lib. Po wpisaniu wspomnianej ścieżki zamknij okno dialogowe, klikając przycisk OK. Wprowadzone zmiany należy również zatwierdzić w otwartym oknie dialogowym opcji kompilacji projektu - to tego celu służy przycisk OK.   

[Code::Blocks] Konfiguracja 'Linker Directories' dla biblioteki SFML 2.0
[Code::Blocks] Konfiguracja 'Linker Directories' dla biblioteki SFML 2.0

Statyczne linkowanie standardowych bibliotek C++

Ustawienia omawiane w niniejszym paragrafie dotyczą okna dialogowego, zawierającego opcje kompilacji projektu. Zanim zaczniesz wprowadzać ustawienia zgodnie z opisem znajdującym się w niniejszym paragrafie, zaznacz konfigurację nadrzędną dla trybu Debug oraz trybu Release w otwartym oknie dialogowym (drzewko wyboru konfiguracji znajduje się w lewej części okna dialogowego).
Dodatkową opcją, jaką warto skonfigurować jest statyczne linkowanie standardowych bibliotek C++. Dzięki temu nie będziesz musiał przegrywać kolejnych plików *.dll (dostarczanych z kompilatorem MinGW), do katalogu ze skompilowaną aplikacją *.exe. W tym celu należy wybrać zakładkę Linker settings, a następnie w polu tekstowym zatytułowanym Other linker options (znajdującym się w prawej części okna), wpisać następujące linijki:
-static
-static-libgcc
Dla starszego kompilatora, dostarczanego z wersją Code:Blocks 10 należy jeszcze dopisać linijkę:
-static-libstdc++
Wprowadzone zmiany należy zatwierdzić za pomocą przycisku OK.

[Code::Blocks] Statyczne linkowanie standardowych bibliotek C++
[Code::Blocks] Statyczne linkowanie standardowych bibliotek C++

Konfiguracja 'Link Libraries' - tryb Debug

Uwaga! Ustawienia omawiane w niniejszym paragrafie dotyczą okna dialogowego, zawierającego opcje kompilacji projektu. Zanim zaczniesz wprowadzać ustawienia zgodnie z opisem znajdującym się w niniejszym paragrafie, zaznacz konfigurację Debug w otwartym oknie dialogowym.
Ostatnią rzeczą jaką należy skonfigurować dla biblioteki SFML 2.0 w trybie Debug to określenie listy bibliotek, jakie mają zostać dolinkowane do tworzonej przez nas aplikacji. W tym celu należy wybrać zakładkę Linker Settings. Po wybraniu zakładki Linker settings, odszukaj w dolnej części okna przycisk zatytułowany Add (kliknięcie go spowoduje otwarcie nowego okna dialogowego). Wspomniane nowe okno dialogowe służy do dodawania bibliotek wygenerowanych przez kompilator (są to pliki z rozszerzeniem *.a). Omawiane okno dialogowe umożliwia dodanie tylko i wyłącznie jednej biblioteki naraz, a więc koniecznym będzie kilkukrotne użycie wcześniej wspomnianego przycisku Add. Użyj teraz przycisku Add, aby wprowadzić następujące biblioteki:
  • sfml-audio-d
  • sfml-graphics-d
  • sfml-main-d
  • sfml-network-d
  • sfml-system-d
  • sfml-window-d
Zwróć szczególną uwagę, iż wszystkie podane biblioteki posiadają w nazwie sufiks '-d', który oznacza, że dana biblioteka jest przeznaczona dla trybu Debug. Wprowadzone zmiany zatwierdza się w otwartym oknie dialogowym opcji kompilacji projektu za pomocą przycisku OK.

[Code::Blocks] Konfiguracja 'Link Libraries' dla biblioteki SFML 2.0 (tryb Debug)
[Code::Blocks] Konfiguracja 'Link Libraries' dla biblioteki SFML 2.0 (tryb Debug)

Konfiguracja 'Link Libraries' - tryb Release

Uwaga! Ustawienia omawiane w niniejszym paragrafie dotyczą okna dialogowego, zawierającego opcje kompilacji projektu. Zanim zaczniesz wprowadzać ustawienia zgodnie z opisem znajdującym się w niniejszym paragrafie, zaznacz konfigurację Release w otwartym oknie dialogowym.
Ostatnią rzeczą jaką należy skonfigurować dla biblioteki SFML 2.0 w trybie Release to określenie listy bibliotek, jakie mają zostać dolinkowane do tworzonej przez nas aplikacji. W tym celu należy wybrać zakładkę Linker Settings. Po wybraniu zakładki Linker settings, odszukaj w dolnej części okna przycisk zatytułowany Add (kliknięcie go spowoduje otwarcie nowego okna dialogowego). Wspomniane nowe okno dialogowe służy do dodawania bibliotek wygenerowanych przez kompilator (są to pliki z rozszerzeniem *.a). Omawiane okno dialogowe umożliwia dodanie tylko i wyłącznie jednej biblioteki naraz, a więc koniecznym będzie kilkurkotne użycie wcześniej wspomnianego przycisku Add. Użyj teraz przycisku Add, aby wprowadzić następujące biblioteki:
  • sfml-audio
  • sfml-graphics
  • sfml-main
  • sfml-network
  • sfml-system
  • sfml-window
Zwróć szczególną uwagę, iż w żadnej z podanych bibliotek nie widnieje żaden sufiks, co oznacza, że biblioteki są przeznaczone dla trybu Release. Wprowadzone zmiany zatwierdza się w otwartym oknie dialogowym opcji kompilacji projektu za pomocą przycisku OK.

[Code::Blocks] Konfiguracja 'Link Libraries' dla biblioteki SFML 2.0 (tryb Release)
[Code::Blocks] Konfiguracja 'Link Libraries' dla biblioteki SFML 2.0 (tryb Release)

Wyłączenie okna konsoli

Dodatkową rzeczą, którą warto wiedzieć jak zrobić to wyłączenie wyświetlającego się okna konsoli. W tym celu należy wejść w opcje projektu, a następnie wybrać zakładkę Build targets. Po wybraniu zakładki Build targets, w prawej części okna należy odszukać opcję zatytułowaną Type, a następnie z listy rozwijanej wybrać pozycję GUI application. Wspomnianą opcję możesz ustawić niezależnie dla trybu Debug oraz dla trybu Release (wybór trybu kompilacji znajduje się po lewej stronie okna dialogowego).

[Code::Blocks] Wyłączenie okna konsoli (tryb Debug + tryb Release)
[Code::Blocks] Wyłączenie okna konsoli (tryb Debug + tryb Release)

Kopiowanie plików *.dll do katalogu roboczego aplikacji

Po pomyślnym skonfigurowaniu kompilatora oraz linkera, kluczowym jest przekopiowanie plików, znajdujących się w katalogu C:\Projekty\Biblioteki\SFML 2.0\bin\ do katalogu z naszą aplikacją. Pliki *.dll, z których korzysta biblioteka SFML muszą się znajdować w tym samym katalogu, co nasza skompilowana aplikacja *.exe.

Podsumowanie

Code::Blocks 10

Niniejszy rozdział opisywał krok po kroku proces konfiguracji biblioteki SFML 2.0 dla kompilatora dostarczanego wraz ze środowiskiem Code::Blocks 10 dla systemu Windows. Opisany proces konfiguracji został tym samym przetestowany na następującej wersji kompilatora:
mingw32-g++.exe (TDM-2 mingw32) 4.4.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Code::Blocks 12

Proces instalacji został przetestowany również dla kompilatora dostarczonego ze środowiskiem Code::Blocks 12 dla systemu Windows. Do przetestowania procesu instalacji użyto następującej wersji kompilatora: 
g++ (tdm-1) 4.7.1
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Pakiet instalacyjny biblioteki SFML dla tej wersji kompilatora nosił nazwę: GCC 4.7 TDM (SJLJ) - 32 bits.

Testowanie przeprowadzonej instalacji

Po zakończeniu procesu konfiguracji przejdź do rozdziału » Kurs SFML 2.0, C++ » Instalacja i konfiguracjaTest działania biblioteki SFML 2.0 lekcja, który umożliwi Ci przetestowanie poprawności działania skonfigurowanej biblioteki SFML 2.0.
Poprzedni dokument Następny dokument
Konfiguracja SFML 2.0 (Visual C++) Test działania biblioteki SFML 2.0