Aleksander Denisiuk. UWM

Zaawansowane systemy programowania grafiki
Instalacja i konfiguracja kompilatora i bibliotek
dla OpenGL w systemie Windows
MSYS2 + MinGW-w64 + (Opcjonalnie) Code::Blocks

MSYS2

  1. Pobierz instalator MSYS2 ze strony https://www.msys2.org/

    Strona z instalatorem MSYS2

  2. Odpal instalator.

  3. Wpisz folder do instalacji: tylko lokalny folder, bez spacji, polskich znaków etc. Najlepiej zostaw domyślny.

    instalacja MSYS2

  4. Na koniec zaznacz Uruchom MSYS2 64 bit teraz.

    koniec instalacji MSYS2

    Zobaczysz konsolę, podobną do tej:

    konsola MSYS2

    Następne kroki będziesz wykonywała wpisując polecenia w konsoli. Raz wpisane polecenie można powtórzyć naciskając strzałkę w górę (). Polecenia można też edytować. Działają przyciski , , , Crtl+, Ctrl+, Home, End. Działa autouzupełnienie po klawiszu Tab. Można wkleić tekst ze schowka.

  5. Aktualizacja bazy danych dostępnych pakietów. Wpisz

     $ pacman -Syu

    Śmiało możesz się zgadzać ze wszystkimi propozycjami odpowiadając y albo po prostu naciskając Enter:

    koniec instalacji MSYS2

    Jeżeli wszystko pójdzie zgodnie z planem, konsola zostanie zamknięta.

  6. Uruchom konsolę MSYS2 MinGW 64 bit ponownie. Znajdź w menu programów:

    koniec instalacji MSYS2

    Zakończ aktualizację pakietów wpisując

     $ pacman -Su

MinGW-w64

  1. Instalacja kompilatora

     $ pacman -S mingw-w64-x86_64-toolchain

    Można zainstalować wszystko. Chociaż Fortran i Ada na pewno nie będą potrzebne.

  2. Instalacja make

     $ pacman -S make
  3. Instalacja zip/unzip

     $ pacman -S zip
     $ pacman -S unzip

Nie działa…

Jeżeli po wykonaniu wcześniej opisanej instrukcji nie możesz skompilować testowego projektu poleceniem make (na przykład, system nie odnajduje kompilatora bądź bibiotek), może to oznaczać, że masz w systemie już zainstalowany inny kompilator i narzędzie make. Na przykład, w składzie paczki XAMPP albo razem z gitem.

Najprostszym rozwiązaniem w tej sytuacji będzie zainstalowanie Code::Blocks. Upewnij się, że masz w ustawieniach wpisaną ścieżkę do kompilatora i inne parametry identycznie do tych z rysunku. Kompiluj projekt w Code::Blocks.

Alternatywnie można poprawić konfigurację twojego systemu, aby domyślnie używane były make oraz kompilatory z MSYS2. Albo wpisanie jawnej ścieżki do kompilatora w pliku Makefile. Można również nie instalować MSYS2, skorzystać z tamtego kompilatora, trzeba tylko doinstalować niezbędne biblioteki.

Biblioteki

  1. Instalacja GLFW

     $ pacman -S mingw-w64-x86_64-glfw
  2. Instalacja GLEW

     $ pacman -S mingw-w64-x86_64-glew

Testowy projekt

Wszystko już jest zainstalowane. Skompilujemy i uruchomimy testowy projekt

  1. Tworzymy katalog dla projektu:

     $ mkdir Triangle
  2. Przechodzimy do tego katalogu:

     $ cd Triangle
  3. Pobieramy archiwum z projektem:

     $ wget http://wmii.uwm.edu.pl/~denisjuk/uwm/zaa/c/lab01/Triangle.zip
  4. Rozpakowujemy:

     $ unzip Triangle.zip
  5. Budujemy:

     $ make
  6. Odpalamy:

     $ make run
  7. Pakujemy projekt do wysłania mailem:

     $ make zip
  8. Voila!

Uwagi

  1. Skompilowany program (triangle.exe) można odpalić bezpośrednio z konsoli:

     $ ./triangle.exe
  2. Fizycznie program znajduje się w folderze C:\msys64\home\User\Triangle. Można tam na niego doubleclicknąć. Windows nie potrafi jednak odpalić tego programu, bo nie będzie w stanie znaleźć bibliotek (powie których). Wszystkie te biblioteki są w folderze C:\msys64\mingw64\bin. Można te biblioteki skopiować do foldera z programem. Albo nawet do C:\Windows\System32.

Code::Blocks (Opcjonalnie)

Do pisania kodu można użyć dowolnego edytora programistycznego. Jeżeli wolisz programować w IDE i nie masz ulubionego dla C++, wypróbuj Code::Blocks.

Instalacja i konfiguracja

  1. Pobierz plik instalacyjny z https://www.codeblocks.org/. Kompilator i debugger Mingw już masz zainstalowany, wybierz instalator bez nich:

    Instalacja Code::Blocks

  2. W ustawieniach Code::Blocks trzeba podać ścieżkę do kompilatora. Wybierz w menu opcję Settings —> Compiler. W rozdziale Global Compiler Settings wybierz panel Toolchain Executables wpisz w polu Compiler’s Installation Directory ścieżkę C:\msys64\mingw64 jak na obrazku:

    Ścieżka do kompilatora Code::Blocks

  3. Ten krok należy wykonać tylko jeśli będziesz programować w OpenGL. Jeżeli nie, to już wszystko zrobiłaś.
    A więc: nie zamykaj tego okna. Znajdź panel Linker settings wpisz w polu Other linker options następujące opcje -lglfw3 -lglew32 -lopengl32.

    Biblioteki dla linkera Code::Blocks

    Teraz konsolidator (inaczej linker, program który łączy pliki skompilowane z twojego kodu w jeden plik wykonywalny) będzie wiedział w jakich bibliotekach znaleźć dodatkowe funkcje.

Projekt testowy

  1. Wybierz w menu opcję File —> New —> Project. Wybierz szablon Console application:

    Nowy projekt Code::Blocks

  2. W podanym przez Ciebie katalogu Code::Blocks utworzy kilka plików, między innymi main.cpp. Wypakuj do tego katalogu projekt testowy. Ważne, aby twój plik main.cpp nadpisał ten utworzony automatycznie.

  3. Dodaj do projektu Code::Blocks wszystkie pliki projektu (Project —> Add files).

  4. Jeszcze jedna rzecz. Kod prykładowego projektu używa profilu Debug OpenGL tylko jeżeli przy kompilacji ustawiona jest zmienna środowiskowa DEBUG Wybierz w menu opcję Project —> Build options. W profilu Debug wybierz panel #defines i wpisz tam DEBUG.

    #define DEBUG Project

    • Można DEBUG ustawić w opcjach kompilatora w ustawieniach Code::Blocks. Będzie to miało wpływ na wszystkie projekty. Wybierz w menu opcję Settings —> Compiler. W panelu #defines wpisz DEBUG.

      #define DEBUG Code::Blocks

    • Jeżeli masz zamiar debugować w Code::Blocks, upewnij się że w ustawieniach wybrany jest debugger od MSYS2.

      • Wybierz w menu opcję Settings —> Debugger. Wpisz ścieżkę do gdb.exe:

        Opcje Debuggera Code::Blocks

  5. Można projekt zbudować (Build —> Build) i odpalić (Build —> Run).

  6. Enjoy.

Uwagi

  1. Opcje -lglfw3 -lglew32 -lopengl32, które wpisywałaś przy konfiguracji Code::Blocks podane są w pliku Makefile. Otwórz ten plik, znajdź te opcje. Jak widzisz, są tam wpisane też niektóre inne biblioteki. W razie problemów konsolidatora można spróbować uzupełnić opcje w konfiguracji Code::Blocks.

  2. Code::Blocks, jak wiele innych IDE, nie korzysta z dołączonego pliku Makefile. Reguły, z których korzysta przy budowaniu projektu zapisywane są w plikach typu *.cbp, *.depend, etc. Pliki te są specyficzne dla Code::Blocks i są bezużyteczne w systemach bez tego środowiska. Jeżeli będziesz wysyłać komuś projekt, nie załączaj tych plików. Nie załączaj również plików z folderów obj oraz bin. Plik Makefile natomiast koniecznie trzeba dodać.

    • Istnieje możliwość aby Code::Blocks korzystał z twojego pliku Makefile przy budowaniu projektu. Początek ścieżki jest w menu Project —> Properties…
  3. Dowiedz się co jest w folderach obj oraz bin.

  4. Znajdź skompilowany program i spróbuj go odpalić poza Code::Blocks.

  5. ????????

  6. Profit