XXVI. Dev-C++, a projekty
26.1. Co to jest projekt
Polskie słowo projekt, które jest bardzo podobne w pisowni do angielskiego wyrazu project uważane jest przez przeciętnego śmiertelnika za wyrazy o takim samym znaczeniu. Co więcej, przeciętny śmiertelnik stawia znak równości pomiędzy tymi wyrazami, co z punktu widzenia programisty jest niedopuszczalne. Znaczenie polskiego wyrazu projekt jest wypaczone. W naszym kraju projektem nazywamy zarówno kilka kresek narysowanych podczas przerwy śniadaniowej, jak i ogromne projekty, zawierające mnóstwo dodatkowych dokumentów, wchodzących w skład projektu. Za granicą, słowo projekt dla pierwszego przedstawionego przypadku nie ma prawa bytu i co najwyżej takie działanie można nazywać stworzeniem szkieletu do prac nad projektem.
26.2. Do czego służą projekty
W środowisku Dev-C++, projekt służy głównie do takich rzeczy jak:
- sprawne zarządzanie bibliotekami
- zarządzanie katalogami plików nagłówkowych
- konfigurowanie kompilatora na indywidualne potrzeby projektu
Właśnie na tych właściwościach się skupimy w dalszej części tego rozdziału. Zakładam, że wiesz już jak tworzyć projekty i jak wchodzić we właściwości projektu. Czynności te zostały opisane w poprzednim rozdziale, zatytułowanym Dzielenie kodu na kilka plików źródłowych.
26.3. Zakładka: ogólne
Pierwszą zakładką, jaka jest widoczna po otworzeniu opcji projektu, są ustawienia ogólne. W tej zakładce możesz ustawić nazwę projektu (pole tekstowe widoczne na samej górze), ikonę dla programu, którą możesz wybrać z biblioteki standardowej Dev-C++ lub skorzystać z przycisku Przeglądaj, pozwalającego na wybranie dowolnej ikony z dysku. Opcje te są mało interesujące z naszego punktu widzenia, a opisywanie dokładnie ich działania nie ma najmniejszego sensu, ponieważ szybciej będzie jeśli przeklikasz wymienione opcje i sam posprawdzasz jakie są tego efekty.
Najbardziej interesujące opcje, jakie warto tu omówić są zawarte na liście opisanej jako Typ. Pozycje jakie występują na liście to:
- Win32 Biblioteka Statyczna
26.3.1. Typ: Win32 GUI
Jeśli będziesz chciał kiedyś pisać aplikacje okienkowe pod Windowsa (obojętnie czy to będzie wykorzystywanie OpenGL, czy zwykły interfejs graficzny okienek) będziesz musiał zaznaczyć tą właśnie opcję. Opcja ta jak nietrudno się domyślić umożliwia skompilowanie programu wykorzystującego system okienkowy. Plikiem wynikowym kompilacji jest program o rozszerzeniu *.exe.
26.3.2. Typ: Win32 Konsola
Tryb konsolowy jest Ci już bardzo dobrze znany i w nim aktualnie piszesz wszystkie swoje programy. Plikiem wynikowym kompilacji jest również program o rozszerzeniu *.exe, tak samo jak to miało miejsce dla typu Win32 GUI.
26.3.3. Typ: Win32 Biblioteka Statyczna
Jeśli będziesz budował bibliotekę statyczną, będziesz musiał zaznaczyć tą opcję jako aktywną. Biblioteki statyczne przechowują skompilowany kod, który jest dołączany do każdego programu, który chce z nich korzystać. Plikiem wynikowym kompilacji jest biblioteka statyczna o rozszerzeniu *.a. Bibliotekom statycznym zostanie poświęcony osobny rozdział, wyjaśniający wszystkie najważniejsze zagadnienia jakie są z nimi związane.
26.3.4. Typ: Win32 DLL
Jeśli będziesz miał potrzebę stworzyć bibliotekę dynamiczną, będziesz musiał wykorzystać do tego celu tą właśnie opcję. Biblioteki dynamiczne przechowują skompilowany kod tak samo, jak to było w przypadku bibliotek statycznych. Różnicą zasadniczą, jaka jest między biblioteką statyczną, a biblioteką dynamiczną to fakt, że kod binarny biblioteki nie jest dołączany do programu. Plikiem wynikowym kompilacji jest biblioteka dynamiczna o rozszerzeniu *.dll. Bibliotekom dynamicznym zostanie poświęcony osobny rozdział, wyjaśniający wszystkie najważniejsze zagadnienia jakie są z nimi związane.
26.4. Zakładka: parametry
W zakładce parametry zebrane są trzy bardzo ważne pola tekstowe, które umożliwiają Ci niestandardowe skonfigurowanie pracy kompilatorów C i C++, oraz konfigurowanie konsolidatora odpowiedzialnego za dołączanie bibliotek statycznych jak i dynamicznych.
26.4.1. Kompilator C/C++
Pracując z kompilatorem C/C++ prawdopodobnie rzadko będziesz miał potrzebę modyfikowania konfiguracji kompilatora. Jednak jeśli już zajdzie taka potrzeba jest to jedyne słuszne miejsce, w którym powinieneś takie zmiany robić. Wprowadzone zmiany będą dotyczyły tylko i wyłącznie obecnego projektu.
26.4.2. Konsolidator
Konsolidator służy do dołączania bibliotek statycznych i dynamicznych do programu.
Jeśli masz potrzebę dołączenia bibliotek statycznych *.lib, *.a (lub pliku obiektowego *.o), wystarczy że podasz pełną nazwę pliku razem ze ścieżką (jeśli nie jest w bieżącym katalogu).
nazwa_pliku.a
inny_plik.o
Jeśli chcesz dołączyć bibliotekę dynamiczną *.dll, musisz napisać następującą linijkę:
-l nazwa_pliku_dll
Pisanie rozszerzenia dla plików dynamicznych nie jest konieczne.
26.5. Zakładka: pliki/katalogi
Zakładka pliki/katalogi została stworzona do ułatwienia organizacji plików w dużych projektach. Za pomocą zakładek, jakie są widoczne na ekranie, tj. katalogi bibliotek, katalogi plików nagłówkowych, katalogi zasobów, możesz dodawać standardowe ścieżki poszukiwań plików, dzięki czemu zamiast pisać pełne ścieżki dostępu do plików, wystarczy że podasz jego nazwę, a program odpowiedzialny za kompilację poszuka używanych plików nie tylko w standardowych katalogach ale i w tych, które wprowadzisz w odpowiednich zakładkach.
26.6. Pozostałe zakładki
Na chwilę obecną pozostałe, nie wymienione zakładki są dla nas mało interesujące, więc nie będziemy wnikali w ustawienia, jakie można za pomocą nich konfigurować. Jeśli jesteś ciekaw poeksperymentuj na nich we własnym zakresie, testując jednocześnie efekty wprowadzonych zmian.