| 
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-linuxCC      = gccCXX      = g++STRIP   = stripAR      = arAS      = asRANLIB   = ranlibINCPATH   =   -I$(QTDIR)/include -I$(QTDIR)/include/QtCore -I$(QTDIR)/include/QtGuiCFLAGS   =   -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 -lQtGuiLIBS           =   -L"$(QTDIR)lib" -lQtCore4 -lQtGui4MOC      =   $(QTDIR)/bin/mocUIC      =   $(QTDIR)/bin/uicTAR      =   tar -cfBZ      =    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 slowHEADERS_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))endifAR      := $(AR) rHEADERS      +=   $(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 stripall: $(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)).tarclean:   -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)
 |