Programowanie Qt: organizacja projektu

Ostatnio trochę zacząłem się uczyć programowania w Qt. Czasami wiedza za zakresu programowania GUI w jakimś frameworku jest potrzebna, szczególnie jeżeli potrzeba nam stworzyć jakiś tool wspomagający nasze prace programistyczne. Nie chodzi mi tutaj o narzędzia parsujące, ale na przykład narzędzia do analizy logów. Lepiej jest analizować logi, szczególnie jeżeli jest ich bardzo dużo i są one z dużej ilości modułów, jak jest możliwość kolorowania i zaznaczania poszczególnych wpisów.

Zacząłem czytać różne tutoriale i strony z przykładami, szczególnie przydatna oczywiście jest dokumentacja Qt, gdzie można znaleźć sporo przykładów wykorzystania klas.

Pisząc proste przykłady mamy niewiele plików i projekty nie są skomplikowane. Qt SDK dostarcza nam narzędzia Qt Creator, które organizuje projekt w poszczególne foldery i generuje odpowiednie pliku konfiguracyjne. Ale co zrobić w przypadku, gdy nie chcemy korzystać z Qt Creatora? Należy napisać własny plik *.pro.

Całość okazuje się dość prosta za sprawą narzędzia ‘qmake’. Na początek ustalamy podstawową strukturę katalogów. Ja w swoim przykładowym projekcie zrobiłem tak:

projekt
  |-build
     |-moc_files
     |-obj
     |-rcc_files
     |-ui_files
  |-inc
  |-rs
  |-src
  |-ui

Teraz tworzymy pliki projektu. Nagłówki w ‘inc’, pliki źródłowe w ‘src’, zasoby takie, jak obrazki w ‘rs’, pliki interfesju w ‘ui’. W katalogu głównym ‘projekt’ tworzymy plik ‘projekt.pro’, który ma zawartość:

TEMPLATE = app
TARGET =
DEPENDPATH += . inc src ui
INCLUDEPATH += . inc
DESTDIR = build           # trzeba dopisać
RCC_DIR = build/rcc_files # trzeba dopisać
UI_DIR = build/ui_files   # trzeba dopisać
OBJECTS_DIR = build/obj   # trzeba dopisać
MOC_DIR = build/moc_files # trzeba dopisać

# Input
HEADERS += inc/mainwindow.h
FORMS += ui/mainwindow.ui
SOURCES += src/main.cpp src/mainwindow.cpp

Możemy najpierw wykonać komendę ‘qmake -project’, która nam wygeneruje podstawowy plik. Będziemy musieli uzupełnić tylko wpisy dotyczące miejsca, gdzie zostaną utworzone pliku kompilacji oraz wynikowe (komentarze powyżej). Będziemy mieli dzięki temu porządek w głównym katalogu, tylko plik pro i Makefile. Niestety, jeżeli dodamy coś do projektu, na przykład dodatkowy plik interfejsu w katalogu ‘ui’, to przegenerowanie pliku projektu komendą ‘qmake -project’ usunie nam dodane wpisy. Więc warto sobie wcześniej skopiować stary plik albo mieć gdzieś te wpisy na boku i dodawać za każdym razem.

Jak mamy gotowe już pliki konfiguracyjne i projektowe to wykonujemy ‘qmake projekt.pro’, wygenerowany zostanie odpowiedni Makefile. Wpisujemy ‘make’ i aplikacja zostanie zbudowana, wszystkie pliki wykonywalne oraz kompilacji są w katalogu ‘build’, a drzewo projektu jest czyste i przejrzyste.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s