nmake Introduction.ppt_第1页
nmake Introduction.ppt_第2页
nmake Introduction.ppt_第3页
nmake Introduction.ppt_第4页
nmake Introduction.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019/12/6,nmakeIntroduction,2019/12/6,Contents,nmakeoverviewUnderstandingMakefilesUsingVariablesDefiningCustomScanRulesBuildingwithnmakeConclusions,2019/12/6,nmakeoverviewWhatisnmake,Whatisnmake?nmakeisacollectionofenhancementstoUNIXmake(1),usedtosimplifytheprocessofbuildingsoftwaredescendedfromproductdevelopedbyBellLabsResearchalonghistory,overadecadeofdevelopmentanduseusedsuccessfullybyhundredsofprojectswithinLucentandATtheyarethecorecomponentsofthemakefileExample:program:init.cprog.cprogram:init.cprog.cVariablesEditOperatorsTheeditoperatorsprovidedbynmakeformaverypowerfuleditinglanguagethatcanbeusedtoeditthecontentsofavariable.SpecialAtomsSpecialAtomsprovidefinecontroloverassertions,actions,andnmakeprocessing.Therearenearly100ofthem.Example:.FORCECommand-LineOptionsThenmakecommand-lineoptionsprovidecontrolovernmakeexecution.,2019/12/6,UnderstandingMakefilesFormattingaMakefile,Thefirsttargetnameinanyassertionmuststartincolumnone;thetargetsandtheassertionoperatormustbeonthesameline.Thelistofprerequisitescanbeextendedovermultiplelinesbyterminatingalinewithabackslash().Oneormorewhitespacecharactersmusteitherprecedethebackslashorstartthenextline.Succeedinglinesthatstartwithatabareconsideredpartoftheactionblock.Iflinesstartwithoneormorespaces,theyarealsoconsideredpartoftheactionblock,butthatusageisdiscouragedandawarningmessageisgiven,astheresultingmakefilelosessomeportability.,2019/12/6,UnderstandingMakefilesUsingMakefile,Thecommandlinetoexecutenmakeis:nmake-fmakefile_nametargetAnytargetinamakefilecanbereferredtoasanentrypoint.Theusercanspecifythetargetthatistobebuiltonthecommandline.Ifnotargetnamesarespecifiedonthecommandline,nmakewillbuildthefirsttargetintheinputmakefilethatisnotmarkedas.FUNCTIONAL,.OPERATOR,or.REPEAT,andisneitherastatevariablenormetarule.Example:Contentsoffiles.mkFILES=a.cb.ctot.cfilelist:/usr/5bin/ls$(FILES)Runnmake:nmakeffiles.mkfilelist,2019/12/6,UnderstandingMakefilesTheDefaultBaseRulesFile,nmake_install_root/lib/make/Makerules.mk,thedefaultbaserulesfileprovidedwithnmake,isamakefilethatdefinesacollectionofoptions,operators,commonactions,metarules,andvariablessuitableforuseintheUNIXsystemprogrammingenvironment.Itincludespredefinedrulesforavarietyoftransformations.Thusitincludesrulesforcompilingprogramsindifferentlanguages,rulesforcreatingbackupfiles,rulesforcleaningupintermediatefiles,andsoon.,2019/12/6,UnderstandingMakefilesPredefinedSourceDirectory,Sourcedirectoryrulestellnmakewhatdirectoriestolookintofindvarioustypesofsourcefiles.Thefollowingrulesprovideanexampleofsourcedirectoryrules:.SOURCE.C:.src.SOURCE.h:/usr/include.SOURCE.a:/lib/usr/lib,2019/12/6,UnderstandingMakefilesPredefinedAssertionOperators,Allthepredefinedassertionoperators,withtheexceptionofthedependencyassertionoperator(:),aredefinedinthedefaultbaserulesandhavethefollowingsyntax:identifier:Examples:-sourcedependencyoperator:LIBRARY:-createlibraryfromsourcefiles:MAKE:-runnmakeonrhsmakefiles:INSTALLDIR:-installfileindirectory,2019/12/6,UnderstandingMakefilesMetarules,Aseriesofmetarules(alsocalledtransformationrules)isprovidedInthedefaultbaserules.Thesemetarulesdescribehowtobuildafilehavinganameofonepattern(e.g.,prog.o)fromafilehavinganameofadifferentpattern(g.c).Example%.o:%.c(CC)(CCFLAGS)$(CC)$(CCFLAGS)-c$(),2019/12/6,UnderstandingMakefilesCommonActions,Thebaserulesalsodefineagroupofcommonactions,whichareactionsthatarefrequentlyusedbyprojects.Examplesclean-Allgeneratedintermediatefilesareremoved.clobber-Allgeneratedfilesareremoved,excepttheoutputofthecpio,pax,andtarcommonactions.clobber.install-Removesallofthefilesinstalledbytheinstallcommonaction.install-Alltargetfilesoftheassertionswiththepredefinedassertionoperators:,:INSTALL:,:INSTALLDIR:,and:INSTALLMAP:areinstalledinthedirectoryhierarchyrootedat$(INSTALLROOT).,2019/12/6,UnderstandingMakefilesGlobalRules,Project-widerulesintendedtoextendormodifythebaseruledefinitionsmaybeplacedinamakefileknownastheglobalrulesfile.Iftherearenameconflictsinruledefinitionsbetweentheglobalrulesandthebaserules,therulesdefinedintheglobalrulesmakefileoverridethebaserules.ExampleContentsofMakefile:FILES=iomodule.ucprocmod.uctarget:$(FILES)Runnmake:nmakeOutput:make:dontknowhowtomaketargetWriteaglobal.mk:%.c:%.uc$(CP)$()$()oname=$(),2019/12/6,Buildingwithnmake-scalableviewpathingscheme,Whatdoesviewpathingdo?definesavirtualdirectorystructure,whichallowsmultiplenodestobeviewedasasingletreeWhyuseviewpathing?viewpathingprovidesasimplemechanismformaintainingmultipleversionsofaproductusingtheunderlyingfilesystemassistsinavoidingredundantbuildsofpreexistingobjectfilesmaintainedviaVPATHenvironmentvariable(nomakefilechangesrequired)Example:VPATH=/usr/home:/usr/unapproved:/usr/approved,2019/12/6,Buildingwithnmake-scalableviewpathingscheme,VPATH=/usr/home:/usr/unapproved:/usr/approvedSupposetheprogramconsistsofmain.c,alongwithfunctionsandheaderdefinitionsintheremainingfiles.Withviewpathing,abuildforthisexamplewouldusethefollowingversionsofthesefiles:/usr/home/src/f1.c/usr/unapproved/src/f2.c/usr/approved/src/f3.c/usr/unapproved/include/h1.h/usr/approved/include/h2.h/usr/approved/src/cmd/main.c,2019/12/6,Buildingwithnmake-scalableviewpathingscheme,VPATH=/usr/home:/usr/unapproved:/usr/approvedAMakefileforthisexample:,2019/12/6,Buildingwithnmake-Benefitsofviewpathing,Benefitsofviewpathingdevelopersonlyneedtocopychangedsourcefilestoaprivateworkarea,nmakethenlocatestherestusingtheVPATHviewpathingthroughmultiplenodescanrepresentvariousrevisionlevelsofaproduct,thussimplifyingbuildmanagementbuildavoidancebasedonprojectsize,resultantsavingscanbeupwardsof50%ormore,2019/12/6,Buildingwithnmake-incrementalproductbuilds,Whatisanincrementalbuild?abuildwhichonlyusesfilesthatareoutofdatewiththelatestversionWhyuseincrementalbuilds?nmakedeterminesthesetoffilestorebuildbystoring“stateoftheworld”informationinastatefile(.ms)stateinformationrecordstimestampinformationassociatedwithfiles(st_mtime),alongwiththeirdependenciesifafileisoutofdatew.r.t.thetimerecordedinthestatefile,thenitisrebuilt;also,anyitemsthatdependonthefilearerebuiltresult:incrementalbuildsyieldenormoussavingsinbothtimeandresourceallocation,2019/12/6,Buildingwithnmake-incrementalproductbuilds,Example:VPATH=/usr/home:/usr/unapproved:/usr/approved,2019/12/6,Buildingwithnmake-dynamicdependencygeneration,Whatisdynamicdependencygeneration?thecapabilitytodeterminetheimplicitdependenciesbetweenfiles,typicallybetweensourceandheaderfilesbuilt-inrulesareprovidedforscanningmanylanguages(C,C+,Fortran,ESQL/C,nroff/troff,andothers)usercandefinenewscanstrategiesWhyusedynamicdependencygeneration?easesmaintenance-noneedtoassociatefilesexplicitlyinthemakefilesourcefilesandheaderchangesdonotrequirechangemakefilesforC/C+,scannerfollowsthe#includechaintofindoutwhich.hfilesasourcefiledependsuponscanneriscustomizable,evenfordefaultscanrules,2019/12/6,Buildingwithnmake-dynamicdependencygeneration,VPATH=/usr/home:/usr/unapproved:/usr/approvedf1.cincludesh1.hf2.cincludesh2.h,2019/12/6,Conclusions-nmakecorefeatures,scalableviewpathingschemeallowsmultiplebuildenvironmentstocoexistwithminimaleffort

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论