已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人工智能时代的应对策略
- 有关财务人员个人述职报告(18篇)
- 年产10万套交安设施及小型预制件生产基地项目可行性研究报告模板-立项备案
- 2026年(管理学)工商管理试题及答案
- 2026年快递员技能竞赛题库及答案
- 银行公司业务部总经理述职报告(8篇)
- 2026年抵押物变更担保补充合同
- 2026年寒假作业时间管理:寒假作业的个性化学习方案
- 煤气管道(焦化厂)泄漏的带压焊补与安全措施培训课件
- 2026汽车尾气净化催化剂载体产品供需格局发展现状述评规划
- 2026年教师资格中学教育心理学考试题目及答案3
- 2026中国公证协会招聘5人备考题库含答案详解【夺分金卷】
- 2026秋新版人教鄂教版三年级上册小学科学教学计划
- 2025-2026学年四川省甘孜州八年级下册期末物理试题 有答案
- (2026版)《中华人民共和国国家发展规划法》解读
- 2026-2030中国艰难梭菌分子诊断仪行业市场发展趋势与前景展望战略分析研究报告
- 入工业园审批制度
- 2026年科研伦理与学术规范期末考试题库含完整答案详解(网校专用)
- 2026年种子繁育工技能竞赛题库及答案
- 驾校安全职责考核制度
- GB/T 47005-2026增材制造激光定向能量沉积钛合金制件技术规范
评论
0/150
提交评论