欢迎来到天天文库
浏览记录
ID:13539989
大小:79.03 KB
页数:0页
时间:2018-07-23
《makefile 语法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Makefile语法分析第一部分VERSION=2#给变量VERSION赋值PATCHLEVEL=6#给变量PATCHLEVEL赋值SUBLEVEL=22#给变量SUBLEVEL赋值EXTRAVERSION=.6#给变量EXTRAVERSION赋值NAME=HolyDancingManatees,Batman!#给变量NAME赋值#*DOCUMENTATION*#Toseealistoftypicaltargetsexecute"makehelp"#Moreinfocanbelocatedin./README#C
2、ommentsinthisfilearetargetedonlytothedeveloper,donot#expecttolearnhowtobuildthekernelreadingthisfile.#Donot:#ousemake'sbuilt-inrulesandvariables# (thisincreasesperformanceandavoidhard-to-debugbehavour);#oprint"Enteringdirectory...";MAKEFLAGS+=-rR--no-print-
3、directory#操作符“+=”的作用是给变量(“+=”前面的MAKEFLAGS)追加值。#如果变量(“+=”前面的MAKEFLAGS)之前没有定义过,那么,“+=”会自动变成“=”;#如果前面有变量(“+=”前面的MAKEFLAGS)定义,那么“+=”会继承于前次操作的赋值符;#如果前一次的是“:=”,那么“+=”会以“:=”作为其赋值符#在执行make时的命令行选项参数被通过变量“MAKEFLAGS”传递给子目录下的make程序。#对于这个变量除非使用指示符“unexport”对它们进行声明,它们在整个ma
4、ke的执行过程中始终被自动的传递给所有的子make。#还有个特殊变量SHELL与MAKEFLAGS一样,默认情况(没有用“unexport”声明)下在整个make的执行过程中被自动的传递给所有的子make。##-rR--no-print-directory#-rdisablethebuilt-inimpilictrules.#-Rdisablethebuilt-invariablesetttings.#--no-print-directory。#Weareusingarecursivebuild,soweneed
5、todoalittlethinking#togettheorderingright.##Mostimportantly:sub-Makefilesshouldonlyevermodifyfilesin#theirowndirectory.Ifinsomedirectorywehaveadependencyon#afileinanotherdir(whichdoesn'thappenoften,butit'soften#unavoidablewhenlinkingthebuilt-in.otargetswhichf
6、inally#turnintovmlinux),wewillcallasubmakeinthatotherdir,and#afterthatwearesurethateverythingwhichisinthatotherdir#isnowuptodate.##Theonlycaseswhereweneedtomodifyfileswhichhaveglobal#effectsarethusseparatedoutanddonebeforetherecursive#descendingisstarted.They
7、arenowexplicitlylistedasthe#preparerule.#Toputmorefocusonwarnings,belessverboseasdefault#Use'makeV=1'toseethefullcommandsifdefVifeq("$(originV)","commandline")KBUILD_VERBOSE=$(V)endifendififndefKBUILD_VERBOSEKBUILD_VERBOSE=0endif#“ifdef”是条件关键字。语法是ifdef8、le-name>;;else;endif#ifdef只检验一个变量是否被赋值,它并不会去推导这个变量,并不会把变量扩展到当前位置。#“ifeq”与“ifdef”类似。#“ifeq”语法是ifeq(;,;),功能是比较参数“arg1”和“arg2”的值是否相同。##函数origin并不操作变量
8、le-name>;;else;endif#ifdef只检验一个变量是否被赋值,它并不会去推导这个变量,并不会把变量扩展到当前位置。#“ifeq”与“ifdef”类似。#“ifeq”语法是ifeq(;,;),功能是比较参数“arg1”和“arg2”的值是否相同。##函数origin并不操作变量
此文档下载收益归作者所有