资源描述:
《Recursive_Make_Considered_Harmful》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、RecursiveMakeConsideredHarmfulPeterMillermillerp@canb.auug.org.auABSTRACTForlargeUNIXprojects,thetraditionalmethodofbuildingtheprojectistouserecursivemake.Onsomeprojects,thisresultsinbuildtimeswhichareunacceptablylarge,whenallyouwanttodoischangeonefile.Inexaminingthesourceoftheoverlylong
2、buildtimes,itbecameevidentthatanumberofapparentlyunrelatedproblemscombinetopro-ducethedelay,butonanalysisallhavethesamerootcause.Thispaperexploresanumberofproblemsregardingtheuseofrecursivemake,andshowsthattheyareallsymptomsofthesameproblem.SymptomsthattheUNIXcom-munityhavelongaccepteda
3、safactoflife,butwhichneednotbeenduredanylonger.Theseproblemsincluderecursivemakeswhichtake“forever”toworkoutthattheyneedtodonothing,recursivemakeswhichdotoomuch,ortoolittle,recursivemakeswhichareoverlysensitivetochangesinthesourcecodeandrequireconstantMakefileinter-ventiontokeepthemwork
4、ing.Theresolutionoftheseproblemscanbefoundbylookingatwhatmakedoes,fromfirstprinciples,andthenanalyzingtheeffectsofintroducingrecursivemaketothisactivity.Theanalysisshowsthattheproblemstemsfromtheartificialpartitioningofthebuildintoseparatesubsets.This,inturn,leadstothesymptomsdescribed.To
5、avoidthesymptoms,itisonlynecessarytoavoidtheseparation;touseasinglemakesessiontobuildthewholeproject,whichisnotquitethesameasasingleMakefile.ThisconclusionrunscountertomuchaccumulatedfolkwisdominbuildinglargeprojectsonUNIX.Someofthemainobjectionsraisedbythisfolkwisdomareexaminedandshown
6、tobeunfounded.Theresultsofactualusearefarmoreencouraging,withroutinedevelopmentperformanceimprovementssignificantlyfasterthanintuitionmayindicate,andwithouttheintuitvelyexpectedcompromiseofmodularity.Theuseofawholeprojectmakeisnotasdifficulttoputintopracticeasitmayatfirstappear.Miller,P.A.
7、(1998),RecursiveMakeConsideredHarmful,AUUGNJournalofAUUGInc.,19(1),pp.14-25.1.IntroductionThispaperexploressomesignificantproblemsForlargeUNIXsoftwaredevelopmentprojects,encounteredwhendevelopingsoftwareprojectsthetraditionalmethodsofbuildingtheprojectuseusingtherecursivemaketec