摘要: 隐含规则:约定俗成,不用写出。foo.o:foo.c foo.h这类规则可以不写,隐含规则会自动推到并调用;如果不想使用隐含规则,就自己写出;每一条隐含规则都在库中有其顺序。隐含规则对于不同语言类似,主要熟悉C/C++的默认推导规则。隐含规则中会使用的常用变量:AR,CC,CPP, CXX, RM,CFLAGS,ARFLAGS,CXXFLAGS.隐含规则链:生成的中间文件会被rm -f掉,可以设置伪目标不让其删除。模式规则:%自动化变量:$@,$^,$%,$?,$*,$<,$+,$(@D),$(@F)...后缀规则:eg:.c.o:等价于.o:.c;使用伪目标".SUFFIXE 阅读全文
posted @ 2012-03-21 13:17 flyfisher 阅读(112) 评论(0) 推荐(0)
摘要: 函数调用:$(<function> <arguments>);思考如何定义一个“空格”变量;bar:=$(subst $(space),$(comma),$(foo)):把$(foo)中$(space)换成$(comma); 字符串处理函数: subst, patsubst, strip, findstring, filter,filter-out,sort,word,wordlist,words,firstword; 文件名操作函数:dir,notdir,suffix,basename,addsuffix,addprefix,join;foreach函数call函数: 阅读全文
posted @ 2012-03-20 10:12 flyfisher 阅读(126) 评论(0) 推荐(0)
摘要: 变量可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”、“#”、“=”或是空字符(空格、回车等)。变量是大小写敏感的.。推荐使用大小写搭配的变量名。变量在声明时需要给予初值。“$”用“()”或“{}”或不加括号。要使用真实的“$”字符,用“$$”。变量只是替代。变量定义变量 :1.foo=$(foo1);foo1=gcc;使用的变量可以是 后面定义的。避免自己调用自己:foo=$(foo) -o;2.":="操作符:变量中不可(不起作用)使用后面定义的变量;系统变量“MAKELEVEL”:嵌套使用make时当前Makefile的调用层数。操作符是“?=”:先判 阅读全文
posted @ 2012-03-19 13:19 flyfisher 阅读(209) 评论(0) 推荐(0)
摘要: 源文件——中间目标文件——执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。而在链接程序时,链接器会在所有的Object File中找寻函数的实现,如果找不到,那到就会报链接错误码(Linker Error)。给中间目标文件打个包,叫“库文件”。make命令根据GNUmakefile或makefile或Makefile编译链接。make的“-f”和“--file”参数指定makefile文件。找文件中的第一个目标文件(target)。规则:编译针对没编译过的或修改了的文件。make会一层又一层地去找文件的 阅读全文
posted @ 2012-03-17 17:21 flyfisher 阅读(353) 评论(0) 推荐(0)
摘要: 使用github和tower 阅读全文
posted @ 2011-09-22 16:06 flyfisher 阅读(3090) 评论(0) 推荐(0)