当前位置: 首页 > news >正文

站点与网站有什么区别网站开发流程及详解

站点与网站有什么区别,网站开发流程及详解,靓号网站建设,郴州网络推广教程一、目标#xff0c;依赖#xff0c;命令也许大家觉得这个不重要#xff0c;但今天我有了新的认识#xff0c;所以写了下来。这三个就是Makefile的全部#xff0c;但今天我要重点说一下它的执行顺序。每个Makefile都有且只有一个终极目标#xff0c;下设若干子目标#…一、目标依赖命令也许大家觉得这个不重要但今天我有了新的认识所以写了下来。这三个就是Makefile的全部但今天我要重点说一下它的执行顺序。每个Makefile都有且只有一个终极目标下设若干子目标make的规则会检查目标与依赖的时间戳依赖中的某一个比目标新说明目标已经过时需要更新。这里要着重说一下make会将目标的依赖及依赖的依赖全部展开然后才能决定是否需要更新终极目标。a.out/     |    \/       |     \_  /       _       \_/             |            \hello.o       world.o      main.o_/                   |                  \_/                      |                     \hello.c             world.c                main.c对于这个例子相信大家都能写出Makefile。make在解析Makefile时就会生成上面的依赖树它会自底向上比较时间戳若下层的新则执行上层目标所对应的命令然后依次执行上上层的命令因为底层更新了所以上面的都需要更新。如果底层不比上层的新则不执行上层目标所对应的命令这就是make的聪明之处。例如我们更改了hello.c文件make在解析Makefile时首先比较的不是a.out与hello.o谁更新如果make真的这么做那么make就会直接退出因为自你上次执行make时a.out会比hello.o更新而我们修改hello.c并不会影响hello.o的时间戳 而是依赖树的最底端hello.c与hello.o的时间戳因为hello.c的修改目标hello.o的命令会被执行进而触发a.out所对应的命令。目标werld.o与main.o所对应的命令当然不会被执行。make的输出看上去是这个样子的gcc -c hello.cgcc hello.o world.o main.o     在make 的info文档中有这样一段话注意粗体字3.9 How make Reads a MakefileGNU make does its work in two distinct phases.  During the firstphase it reads all the makefiles, included makefiles, etc. andinternalizes all the variables and their values, implicit and explicitrules, and constructs a dependency graph of all the targets and theirprerequisites.  During the second phase, make uses these internalstructures to determine what targets will need to be rebuilt and toinvoke the rules necessary to do so.4 Writing Rules***************A rule appears in the makefile and says when and how to remakecertain files, called the rules targets (most often only one perrule).  It lists the other files that are the prerequisites of thetarget, and commands to use to create or update the target.The order of rules is not significant, except for determining thedefault goal: the target for make to consider, if you do nototherwise specify one.  The default goal is the target of the firstrule in the first makefile.  If the first rule has multiple targets,only the first target is taken as the default.  There are twoexceptions: a target starting with a period is not a default unless itcontains one or more slashes, /, as well; and, a target that definesa pattern rule has no effect on the default goal.  (*Note Defining andRedefining Pattern Rules: Pattern Rules.)二、伪目标伪目标总被认为是过期的总被认为需要被更新。伪目标又称标签之所以这样叫是为了与真实的文件进行区别。那伪目标是如何工作的我们可以将它当作普通文件但不管出现在目标中还是依赖中都以为着它是将要被更新的普通文件。1、伪目标做目标普通文件做依赖这是最常见的一种典型的all伪目标  .PHONY:allall: prog1 prog2       #执行make后会一次生成两个可执行程序prog1:  a.c  ...command...prog2:  b.c ...command...分析在这个Makefile中。.PHONY是第一个目标但它以点开头不会作为终极目标在上面的英文中有解释所以终极目标是allmake的职责所在就是重建这个all目标。因为all是伪目标make命令总认为它需要被更新而更新它需要首先更新prog1 和 prog2 这就达到了一次make而生成两个可执行文件。2、伪目标做目标伪目标又做依赖虽然称为伪目标但也可做依赖目标与依赖是相互转化的就像上面的hello.o它是hello.c的目标又是a.out的依赖.PHONY: all subdir appsall: subdir appssubdir: prog1 prog2apps:  prog3 prog4prog1: a.ccommand...   prog2: b.ccommand...prog3: c.ccommand...prog4: d.ccommand...分析all是终极目标它依赖于subdir 和 apps 因这两个都是伪目标即他们需要被更新。subdir又依赖于prog1 和 prog2 这就回到了上面的那种情况。这种形式经常出现在大的工程中是对上面一种情况的扩展我们可以修改all 或 subdir 或  apps 中的依赖来决定我们需要那些应用程序裁剪掉那些应用程序。你应该听说过内核裁剪与移植吧所谓裁剪就是修改Makefile的目标不生成我们不需要的东东所谓移植就是修改Makefile的编译参数换成其他的编译工具。3、普通文件做目标伪目标做依赖all: progprog: a.c prtcommand....PHONY: prtprt:echo this is prt分析每次执行make时this is prt都会出现在屏幕上。尽管prog不需要被更新但prt中的命令依然要被执行。make会这样来解析prog依赖于prt而prt有需要被更新因为它是伪目标这意味着this si prt会出现在屏幕上prt更新完成后prog目标中的command...就会被执行我们假定a.c没有被更改。事实上我们那个文件也没有更改但是prog目标中的命令还是被执行了info make中不建议这样做A phony target should not be a prerequisite of a real target file;if it is, its commands are run every time make goes to update thatfile.总结在伪目标中始终贯穿着这样一句话伪目标总被认为是需要被更新的。我也是依据这句话来分析上述伪目标的应用。伪目标可以与真实文件重名典型的clean用法因为make知道我们只是想执行clean下的命令而不是去重建一个叫做clean的文件这也是我们有时把它解释称标签的原因。关于上述第二种情况info make中有这样一个解释When one phony target is a prerequisite of another, it serves as asubroutine of the other.  For example, here make cleanall will deletethe object files, the difference files, and the file program:.PHONY: cleanall cleanobj cleandiffcleanall : cleanobj cleandiff             rm programcleanobj :             rm *.ocleandiff :             rm *.diff一、目标依赖命令    这三个是makefile的全部内容现在来说一下它的执行顺序转载于:https://www.cnblogs.com/SFTD/p/3622126.html
http://wiki.neutronadmin.com/news/392337/

相关文章:

  • 美食网站开发与设计文献综述wordpress手机版主题
  • 模板建站和定制建站比较出名的文创产品
  • 博物馆网站做的好的网站建设颜色
  • 上海h5网站开发建网站软件
  • 嵌入字体的网站网站建设济南云畅网络技术有限公司
  • 网站要求济南手机端建站模板
  • 网站开发中网页打印网站初期seo怎么做
  • 甘肃住房和城乡建设厅网站北京汽车业务网站开发公司
  • 前端学习手机网站开发吗自己在线制作logo免费模板
  • 免费的h5制作网站模板网站域名过期未续费怎么办
  • 黑龙江建设兵团知青网站seo优化有哪些
  • 东营市建设网站手机音乐制作软件
  • 提供专业网站建设沧州海外网站建设
  • 网站开发外文翻译温州外贸公司网站建设公司排名
  • 潜力的网站设计制作建设银行淮安招聘网站
  • 广州黄埔做网站公司哪家好一般一个网站从建设到运营要多久
  • 网站备案是域名备案还是服务器备案网络信息安全网站开发教程
  • 上海外贸营销网站建设网站金华专业做网站
  • 做网站专题页需要注意什么手机网站建设介绍
  • 海南网站建设小强哪个网站可以做印章图案
  • 网站设计建设流程图做网站一个月20万
  • 湖北做网站找谁设计公司网站首页显示
  • 网站开发都有争对银行排队做一网站
  • 网站开发 弹窗响应式网站布局实例
  • 常见网站安全漏洞温州网站建设
  • 暖色网站做电脑网站手机能显示不出来
  • 永远网站建设成都的网站设计公司价格
  • 怎么样做钓鱼网站沃尔玛网上商城和超市价格一样吗
  • 有域名在本机上做网站租外国服务器做的网站要备案吗
  • 怎么做购物网站用自己电脑做网站的空间