前一篇《不使用 qmake 建置 Qt Designer 產生的程式:手動建置》基本上已經講了要怎樣手動建置一個 Qt 的應用程式了;而這一篇,則是來寫一個 Qt 應用程式的 GNU Make(參考:維基百科)的 Makefile 了~
這邊同樣是使用上次那個 QtTest 的範例。而對應的 Makefile,由於 Heresy 個人對於 Makefile 的撰寫沒有很深的研究,在弄了很久之後,最後是寫成下面的形式:
1. QTTMP_PATH = ./generated/
2. INC_PATH = -I. \
3. -I$(QTTMP_PATH) \
4. -I/usr/include/qt4
5. LIB_PATH = -L/usr/lib/qt4
6. QTLIBS = -lQtCore -lQtGui -lQtOpenGL
7.
8. .SUFFIXES:
9. .SUFFIXES: .cpp .o .hxx .qrc .ui .hpp
10.
11. QTCOMPILE_FILES = $(QTTMP_PATH)ui_test_window.hpp \
12. $(QTTMP_PATH)qrc_resource.hpp \
13. $(QTTMP_PATH)moc_window.hpp
14. OBJ_FILES = main.o
15.
16. all: QtTest
17. QtTest : $(QTCOMPILE_FILES) $(OBJ_FILES)
18. g++ $(LIB_PATH) -o $@ $(OBJ_FILES) $(QTLIBS)
19.
20. .cpp.o:
21. g++ $(INC_PATH) -c $<
22.
23. $(QTTMP_PATH)moc_%.hpp : %.hxx
24. moc $< -o $@
25.
26. $(QTTMP_PATH)qrc_%.hpp : %.qrc
27. rcc $< -o $@
28.
29. $(QTTMP_PATH)ui_%.hpp: %.ui
30. uic $< -o $@
31.
32. clean:
33. rm $(QTTMP_PATH)*
34. rm *.o $(TARGET)
Heresy 不確定這樣是不是最好的寫法,但是至少在 Heresy 這裡,都是可以用的;而也由於考慮到修改的方便性、擴充性,有不少東西都是定義成變數的形式。當然,也還有更多的東西也都可以變數化,這點就是視個人需要做調整了~
閱讀更多»