makefile学习.docVIP

  • 16
  • 0
  • 约 14页
  • 2017-07-09 发布于河南
  • 举报
makefile学习

makefile学习 营帐研发部:胡文送 2010-12-29 一些基本概念: make是一个工具,输入make,其会在当前目录下找名字为”Makefile”或者”makefile”的文件,要制定使用某个makefile文件可以使用:make -f 文件名,如(make -f Makefile_r 编译实时模式)。 如果命令太长,你可以使用反斜框(‘\’)作为换行符。make对一行上有多少个字符没有限制 当我们用“@”字符在命令行前,那么,这个命令将不被make显示出来 CPPFLAGS C预处理器参数 LDFLAGS 链接器参数。(如:“ld”) CXXFLAGS C++语言编译器参数 -Idir? 在你#includefile的时候,会先在当前目录查找你所的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I了目录,他先在你所的目录查找,然后再按常规的顺序去找.?-Ldir? 指定编译的时候,搜索库的路径。比如你自己的库,可以用它目录,不然编译器将只在标准库的目录找。这个dir就是目录的名称。-L../../bizlib/lib -lxdbc在../../bizlib/lib路径下查找,所使用名为libxdbc.a的函数库。 对于“=“,右侧的变量不一定要是已定义的,也可以使用后面定义的变量,对于“=:”则右侧的变量必须是已经定义的。 makefile样例分析: 库函数makefile: c++/bizlib_crm/AllBrandExchange/Makefile F201:/yzyfb/hws/c++/bizlib_crm/AllBrandExchange#vi Makefile Makefile 108 lines, 2827 characters ## -*- Makefile -*- ## by herry 2006-11-4 type ?= PROG #如果type没有被定义过,则type的值为PROG,如果之前被定义(如编译CICS环境时,使用# make type=CICS)则该语句不做任何操作,后续可通过判断type的值,判断编译环境。 LIBFILENAME_PROG = $(call mklibfilename,brdchg,$(VERSION)) # mklibfilename、VERSION :config/Make.rules.AIX中定义, #格式: mklibfilename = lib$(1).a^M # VERSION = 1.0.0^M #此处得到值为:brdchg.a SONAME_PROG = $(call mksoname,brdchg,$(SOVERSION)) # SOVERSION在config/Make.rules中定义:值为10 # mksoname 格式:$(if $(2),lib$(1).so.$(2),lib$(1).so) LIBNAME_PROG = $(call mklibname,brdchg) #mklibname = lib$(1).a^M TARGETS_PROG = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) # mklibtargets = $(1) # libdir = $(top_srcdir)/lib^M LIBFILENAME_CICS = $(call mklibfilename,cicsbrdchg,$(VERSION)) SONAME_CICS = $(call mksoname,cicsbrdchg,$(SOVERSION)) LIBNAME_CICS = $(call mklibname,cicsbrdchg) TARGETS_CICS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) #上面四个变量只是针对CICS编译环境定义,具体涵义与上面的相同。 LIBFILENAME = $(LIBFILENAME_$(type)) SONAME = $(SONAME_$(type)) LIBNAME = $(LIBNAME_$(type)) TARGETS = $(TARGETS_$(type)) #上面四个变量的值都是根据t

文档评论(0)

1亿VIP精品文档

相关文档