-
UID:73156
-
- 注册时间2009-01-13
- 最后登录2016-01-11
- 在线时间192小时
-
- 发帖130
- 搜Ta的帖子
- 精华2
- 金钱1448
- 威望142
- 贡献值0
- 好评度141
-
访问TA的空间加好友用道具
|
—
本帖被 XChinux 执行加亮操作(2011-02-01)
—
只需修改 上方的内容。 一般只要把 头文件和 部分源文件写清楚就行, 其他的根据自己的环境一次就能改好。 HEADERS_QOBJ为需要用 moc编译的头文件(即包含Q_OBJECT宏),HEADERS =这里填写不需要moc编译的头文件。SRCS =填写HEADERS_QOBJ对应的源文件除外的源文件。TARGET为最终生成的可执行文件,若是库,则填写LIB_SO=或LIB_A= 也可以在HEADERS =处填写所有头文件,注释掉的HEADERS_QOBJ哪行取消注释,但是这样 make一开始时速度会慢。 以上准备好后,可以make了 这个模板不像qmake生成的Makefile列举所有文件的依赖关系和规则,而是先生成一个moc.dep的文件,用来说明moc生成源文件的规则和依赖关系,然后用gcc来产生所有目标文件的依赖关系的文件并包含之,这样整个Makefile就比较简短了 - #########################################################################
- # Makefile for Making Qt applications
- # Created by Wang Bin wbsecg1@gmail.com, 2011/01/28
- #############################################################################
- HOST = arm-linux
- CC = gcc
- CXX = g++
- STRIP = strip
- AR = ar
- AS = as
- RANLIB = ranlib
- INCPATH = -I$(QTDIR)/include -I$(QTDIR)/include/QtCore -I$(QTDIR)/include/QtGui
- CFLAGS = -pipe -Wall -W -O2 -DNO_DEBUG $(INCPATH)
- CXXFLAGS= -pipe -DQWS -fpic -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG $(INCPATH)
- LINK = $(CXX)
- LFLAGS = -lQtCore -lQtGui
- LIBS = -L"$(QTDIR)lib" -lQtCore4 -lQtGui4
- MOC = $(QTDIR)/bin/moc
- UIC = $(QTDIR)/bin/uic
- TAR = tar -cf
- BZ = bzip2 --compress --force -9
- ################# Specify headers, qobject headers, srcs and targets below #################
- HEADERS =
- #HEADERS_QOBJ = $(foreach h,$(HEADERS),$(if $(shell grep "Q_OBJECT" $(h)),$(h))) #very slow
- HEADERS_QOBJ +=
- SRCS = main.cpp
- TARGET =
- LIB_SO =
- LIB_A =
- OBJDIR = objs
- #OBIDIR = ./ 如果是该目录下
- ############################################ Automatic ############################################
- ifneq ($(HOST),)
- HOSTE := $(addsuffix -,$(HOST))
- CC := $(addprefix $(HOSTE),$(CC))
- CXX := $(addprefix $(HOSTE),$(CXX))
- AR := $(addprefix $(HOSTE),$(AR))
- AS := $(addprefix $(HOSTE),$(AS))
- STRIP := $(addprefix $(HOSTE),$(STRIP))
- RANLIB := $(addprefix $(HOSTE),$(RANLIB))
- endif
- AR := $(AR) r
- HEADERS += $(HEADERS_QOBJ)
- SRCS_QOBJ = $(HEADERS_QOBJ:.h=.cpp)
- SRCS_MOC = $(join $(dir $(SRCS_QOBJ)),$(patsubst %,moc_%,$(notdir $(SRCS_QOBJ))))
- OBJS := $(addprefix $(OBJDIR)/,$(subst .cpp,.o,$(SRCS)))
- OBJS_QOBJ = $(addprefix $(OBJDIR)/,$(patsubst %.cpp,%.o,$(SRCS_QOBJ)))
- OBJS_MOC = $(patsubst ./%,$(OBJDIR)/%,$(patsubst %.cpp,%.o,$(SRCS_MOC)))
- SRCS += $(SRCS_QOBJ) $(SRCS_MOC)
- OBJS += $(OBJS_QOBJ) $(OBJS_MOC)
- DEP = $(OBJS:.o=.d)
- MPKG_SUBDIR = $(MPKG_DIR)/$(notdir $(basename $(TARGET)))
- .PHONY: all clean dist strip
- all: $(TARGET) $(LIB_SO) $(LIB_A)
- $(OBJDIR):
- test -d $@ || mkdir -p $@
- $(OBJDIR)/%.o: %.cpp
- @echo "Making $@..."
- $(CXX) -c $(CXXFLAGS) -o $@ $<
-
- $(OBJDIR)/%.d: %.cpp $(OBJDIR)
- @echo "Generating $@..."
- -@$(CXX) $(CXXFLAGS) -w -MM $< |sed -e '1s/\(.*\)/$(OBJDIR)\/\1/' >$@
-
- $(TARGET): $(OBJS)
- $(LINK) $(LFLAGS) -o $(TARGET) $(OBJS) $(LIBS)
- $(LIB_SO): $(OBJS)
- $(LINK) $(LFLAGS) -o $(TARGET) $(OBJS) $(LIBS)
-
- $(LIB_A): $(OBJS)
- $(AR) $@ $(QTABOBJS) $^
- $(RANLIB) $@
- moc.dep: $(HEADERS_QOBJ)
- echo "################Rules of moc srcs!#################" >$@
- @for header in $(HEADERS_QOBJ); do \
- echo `echo ./$$header |sed 's/\(.*\)\/\(.*\).h/\1\/moc_\2.cpp/'`: $$header >>$@; \
- echo ' $$(MOC) $$< >$$@' >>$@; \
- echo >>$@; \
- done
-
- dist:
- $(TAR) $(basename $(TARGET)).tar Makefile $(SRCS_QOBJ) $(HEADERS_QOBJ) $(INTERFACES)
- $(BZ) $(basename $(TARGET)).tar
- clean:
- -rm -f $(OBJS) $(OBJS_MOC) $(SRCS_MOC) $(TARGET) $(LIB_SO) $(LIB_A) $(DEP)
- -rm -f `find ./ -name \*~` core
-
- strip: $(TARGET)
- cp $< $<_unstripped
- -$(STRIP) $<
-
- -include moc.dep
- -include $(DEP)
|