Makefile例子详解

#PRECOMPILE   =   cpre   -m//宏定义cpre   -m是预编译命令和命令行参数,有的不需要这一行,有数据库的需要  
  CC   =   xlC_r   -qcpluscmt//编译器名称和参数  
  CFLAGS   =   -c   -lct   -lcs   -ltcl   -lcomn   -lintl   -lm//编译参数  
   
  APPDIR   =   /apps/xucy//应用程序目录  
  TUXDIR   =   /home/tuxedo//程序用到的其他lib目录  
  INCLUDE   =   -I   /usr/sybase/OCS-12_0/include   -I   ../SHR   \  
  -I   /home/tuxedo/include   -I   ../ora   \  
  -I   /usr/STLport/stlport  
   
  //程序用到的其他lib目录  
  #oracle   libs  
  ORACLE_HOME     =   /oracle/app/oracle/product/8.1.7  
  ORALIBS     =   -L   /oracle/app/oracle/product/8.1.7/lib   -lclntsh  
  //上面两行是oracle的路径和lib  
  #sybase   libs  
  SYBLIBPATH   =   /usr/sybase/OCS-12_0/lib  
  SYBLIBS   =   -l   $(SYBLIBPATH)/libcomn.a   \  
  -l   $(SYBLIBPATH)/libcs.a   \  
  -l   $(SYBLIBPATH)/libct.a   \  
  -l   $(SYBLIBPATH)/libintl.a   \  
  -l   $(SYBLIBPATH)/libtcl.a   \  
  -l   $(SYBLIBPATH)/libsybdb.a    
   
  CLIBS   = -l   /usr/ibmcxx/lib/libC.a  
   
  COMMONOBJ   =   ../ora/ConfigFileOp.o   ../ora/DBParameter.o   ../ora/OperateDB.o   ../ora/RecordsetOracle.o   \  
  ../syb/CRecordSet.o   ../syb/sybesql.o   ../ora/ConfigFileOp.o  
  //连接obj文件  
  #   You   need   to   edit   these!  
  TARGET   =   STemplet//目标文件名称,也就是最终的文件  
  OBJS   =   service.o   CTemplet.o   CSql.o   CTuxedo.o   CTempletPack.o     /CPTemplet.o   \  
  SWhereInfo.o   CRunTemplet.o   CPRstFile.o   CSpecialQuery.o   GetTplData.o//目标文件  
  #  
  tempIncDir   =   ./tempinc//临时文件目录  
  STLOBJS=$(tempIncDir)/_algobase.o   \  
  $(tempIncDir)/_alloc.o   \  
  $(tempIncDir)/_string.o   \  
  $(tempIncDir)/_string_io.o   \  
  $(tempIncDir)/_string_fwd.o   \  
  $(tempIncDir)/_threads.o   \  
  $(tempIncDir)/_vector.o    
  //连接的stlobj文件  
  all:   $(OBJS)   $(STLOBJS)   $(TARGET)   reboot//表示编译步骤,先连接obj,再连接stlobj,在连接成目标文件(最终的文件),重新启动命令  
  only:   $(OBJS)   $(STLOBJS)   $(TARGET)//没有重新启动的编译过程  
   
  .SUFFIXES:   .C   .cc   .cxx   .cpp//后缀名称  
  .C.o:   
            $(CC)   $(CFLAGS)   $(INCLUDE)   -qtempinc=$(tempIncDir)   -qmaxerr=10   -qrtti=all   -qsrcmsg   -o   $(@)   -c   $<  
  .cpp.o:  
            $(CC)   $(CFLAGS)   $(INCLUDE)   -qmaxerr=10   -qrtti=all   -qsrcmsg   -o   $(@)   -c   $<  
  //将预编译后的.C文件编译成.o文件的命令  
  $(TARGET):  
                  CC=xlC   buildserver   -f   "$(OBJS)   $(STLOBJS)   $(COMMONOBJ)"   \  
                   -f   "$(ORALIBS)"   $(CLIBS)   $(SYBLIBS)   -o   STemplet   \  
                   -o   $(@)   -s   SetTemplet   -s   RunTemplet   -s   GetMaxID   -s  InsTemplet   \  
                   -s   CutTemplet   -s   DelTemplet   -s   SendTemplet   -s   GetTemplet   \  
                   -s   ShareTpl   -s   SaveTemplet   -s   UpdTemplet   -s   SaveFile     -s   ExBrow   \  
                   -s   DelFile   -s   GetTplData     -v  
  //连接成目标文件的命令  
  reboot:  
            tmshutdown   -s   $(TARGET)  
            mv   $(TARGET)   ../tuxserver/$(TARGET)  
            tmboot   -s   $(TARGET)  
  //重新启动命令  
  clean:   
            rm   *.o  
  //删除所有的.o文件

你可能感兴趣的:(C++,c,职场,makefile,休闲)