wtorek, 10 marca 2009

Eclipse CDT i inne narzędzia do C++

W zeszłe wakacje miałem ciekawy projekt i właśnie znalazłem zaległy post z tego czasu :)

Po 3 lata z Java i C# można zapomnieć co to jest segmentation fault albo destruktor. Jednak język to tylko narzędzie, jedno z wielu, a jeden telefon może sprawić by znów używać najlepszy i najgorszy z języków jakim jest C++. Na miejscu zbrodni zastałem Visual Studio 6. No tak, w sumie w zakresie C++ w Visual Studio względnie nie wiele się zmieniło przez te 10 lat, chociaż teraz jest to produkt darmowy również do zastosowań komercyjnych (trochę okrojony). W VC6 już pierwszego dnia, zaraz po ustawieniu środowiska i integracji z CVS (czyli instalacji WinCVS. Trudno o dobry plugin do jakiegokolwiek systemu kontroli wersji dla VS), przestała działać nawigacja po kodzie i autocompletion (lub jak kto woli IntelliSense). Wystarczy usunąć jeden plik i znów działa. Hmm, czekaj czekaj gdzie są zakładki w tym narzędziu? Nie znalazłem. Po trzech dniach uznałem, że cała gadanina o tym, że Java jest wolna nie może być dalsza od prawdy. Ctrl+S w VC6 oznacza, że mogę iść po wodę, po zmianie jednego pliku kompilacja oznacza, że mogę iść zrobić kawę. Problemu z Ctrl+S nie zniosłem, bo mam zwyczaj często ten skrót używać i pisać dalej, a nie czekać min. 30 sekund aż mi środowisko zacznie odpowiadać (nie VS6 nie ma czegoś takiego jak autobuild, nie ta liga, ot tak się po prostu działo). Pora poszukać alternatywy. Dawno, dawno temu używałem DJGPP, później prawdopodobnie największego przegranego wśród zwycięzców: bardzo dobrego C++ Builder 6. Również Dev-Cpp(ciekawe, wersja 5 jest wersją beta od przynajmniej 4 lat) i całkiem udany Code::Block który o ile dobrze pamiętam świetnie integrował się z darmowym kompilatorem od Borland. Oprogramowanie zmieniało się w razie potrzeby, odgórnej dyrektywy, dostępności licencji, ramu i wyposażenia biblioteki, stąd spora liczba środowisk których używałem (pomijając linuxowe jedno-projektowe przygody jak Anjuta). Przyszedł też czas na VS 2003 i skończyło się na VS 2005 - to było moje ostatnie środowisko, w którym używałem C++. Może przy okazji dam jeszcze szansę VS 2008. W omawianym zleceniu okazało się, że Notepad++ jest bardziej ergonomiczny niż VC6. Czasem lekki edytor jest wszystkim czego potrzeba. Przynajmniej póki tworze kod. Brakowało mi jednak możliwości efektywnego przeglądania tego co jest napisane (a jest tego dużo). No i czy naprawdę muszę odpalać kompilację, by dostać stos głupich błędów z powodu braku średnika ? Pora poszukać lepszego rozwiązania.



W praktyce z darmowych narzędzi polecam uwadze:

  • Eclipse CDT - systemy wbudowane, oprogramowanie dla Linux i podobnych, oraz jako "lekki" edytor plików cpp.
  • VS 2008 - oprogramowanie dla Windows, gry (choć wszędzie lepiej pasuje płatna wersja :) )
  • Code::Blocks - wszędzie ;) - lekkie choć kompletne IDE na różne platformy
  • MonoDevelop - Linux i/lub GTK, wygląda bardzo obiecująco - prosty i wystarczający, nie miałem okazji używać.
VC2008 odpadło z przyczyn środowiskowych. Zostaje Code::Blocks i Eclipse CDT. Już na wstępie Code::Blocks ma przewagę - obsługuje wszystkie sensowne kompilatory i projekty za równo VS jak i Dev-Cpp. Eclipse w praktyce wymaga gcc i gdb, na Windows działa to marnie i potrzeba Cygwin lub Mingw, a projekty portować trzeba ręcznie. Z drugiej strony Eclipse mogę wpiąć jako edytor w projekt nie zmieniając oryginalnego projektu, dalej mam dużo ciekawych. Niestety brak kompilacji i debug. Ostatecznie korzystałem z Notpad++ do szkicu kodu (tydzień pisania samego pseudokodu dla pierwszej wersji algorytmu :) ), Eclipse CDT do edytowania / chodzenia po kodzie i Visual Studio do kompilacji i debug. Eclipse CDT ma własny parser i stara się równać poziomem do JDT. To nie jest proste ze względu na specyfikę C++. Mimo to dostaje się mnóstwo dobrych dodatków jak śledzenie "include" (które bierze pod uwagę stan zmiennych preprocesora), nawigacja po kodzie metodą Ctrl+Click, inteligentne podpowiedzi edytora, wyszukiwanie elementów, podstawowy refactoring, outline, Mylyn itp.

Linki:

1 komentarz:

Krzysiek Wesołowski pisze...

Eclipse pozwala również używać plików Makefile, lub wywoływać budowanie dowolną komendą - albo jako Run/Debug (nie jestem pewny czy nie ma tu jakichś ograniczeń) albo jako Run external tool.