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

网站建站公司现在还做响应式网站吗

网站建站公司,现在还做响应式网站吗,pc网站建设需要提供哪些资料,企业微信app下载安装官方版后面会介绍gcc获得源文件依赖的方法#xff0c;gcc这个功能就是为make而存在的。我们采用gcc的-MM选项结合sed命令。使用sed进行替换的目的是为了在目标名前加上“objs/”前缀。gcc的-E选项#xff0c;预处理。在生成依赖关系时#xff0c;其实并不需要gcc编译源文件#x…后面会介绍gcc获得源文件依赖的方法gcc这个功能就是为make而存在的。我们采用gcc的-MM选项结合sed命令。使用sed进行替换的目的是为了在目标名前加上“objs/”前缀。gcc的-E选项预处理。在生成依赖关系时其实并不需要gcc编译源文件只要预处理就可以获得依赖关系了。通过-E选项可以避免生成依赖关系时gcc发出警告以及提高依赖关系的生成效率。 现在已经找到自动生成依赖关系的方法了那么如何将其整合到我们complicated项目的Makefile中呢自动生成的依赖信息不能直接出现在Makefile中因为不能动态地改变Makefile中的内容此时我们需要通过创建依赖关系文件的方式。假设依赖关系的文件以“.dep”结尾因此我们新创建一个deps文件用来存放依赖关系文件信息。 Makefile如下 1 .PHONY: all clean2 3 MKDIR mkdir4 RM rm5 RMFLAGS -rf6 7 CCgcc8 9 DIR_OBJSobjs 10 DIR_EXESexes 11 DIR_DEPSdeps 12 13 DIRS $(DIR_OBJS) $(DIR_EXES) $(DIR_DEPS) 14 EXEcomplicated 15 EXE:$(addprefix $(DIR_EXES)/,$(EXE)) 16 SRCS$(wildcard *.c) 17 OBJS$(SRCS:.c.o) 18 OBJS:$(addprefix $(DIR_OBJS)/,$(OBJS)) 19 DEPS$(SRCS:.c.dep) 20 DEPS:$(addprefix $(DIR_DEPS)/,$(DEPS)) 21 22 all:$(DIRS) $(DEPS) $(EXE) 23 $(DIRS): 24 $(MKDIR) $ 25 $(EXE):$(OBJS) 26 $(CC) -o $ $^ 27 $(DIR_OBJS)/%.o:%.c 28 $(CC) -o $ -c $^ 29 $(DIR_DEPS)/%.dep:%.c 30 echo Creating $ ... 31 set -e;\ 32 $(RM) $(RMFLAGS) $.tmp;\ 33 $(CC) -E -MM $^ $.tmp;\ 34 sed s,\(.*\)\.o[:]*,objs/\1.o:,g $.tmp $;\ 35 $(RM) $(RMFLAGS) $.tmp 36 clean: 37 $(RM) $(RMFLAGS) $(DIRS) 这个Makefile废了不少力气才想明白。。。 和之前的complicated项目的Makefile相比 1增加了deps文件夹 2删除了目标文件创建规则中的foo.h依赖并将规则中的$变回了$^ 3,增加了了DEPS变量用于存放文件 4为all目标增加了$(DEPS) 5增加了一个用于创建依赖关系问价你的规则。在这个规则中使用了gcc的-E和-MM选项来获取依赖关系。在生成最终的依赖关系文件之前使用了一个由$.tmp表示的临时文件且在依赖文件生成以后将其删除。set -e的作用是告诉shell在生成依赖关系文件的过程中如果出现任何错误就直接退出。shell异常退出的最终表现就是make会告诉我们出错了从而停止后续的make工作。如果不设置这一行当构建依赖出错时make还会继续后面的工作并最终出错这并不是我们希望看到的。读者可以测试故意在源文件或者头文件中植入错误并去掉set -e选项观察make的行为和加上set -e有上面不同。 这里还有几个知识点需要补充。 1.对于规则中的每一条命令make都是在一个新的shell上运行它的。 2.如果希望多个命令在同一个shell中运行可以用“”将这些命令连起来。 3.当命令很长时可以用“\”将一个命令书写成多行。 为了更好的理解第一点我们做一个实验。现假设需要创建一个test目录然后在这个test目录下再创建一个subtest子目录。编写Makefile如下   1 .PHONY:all 2 all: 3 mkdir test 4 cd test 5 mkdir subtest   可以看到test和subtest是同级目录并非父子目录然后用上面提到的知识点更改Makefile 1 .PHONY:all 2 all: 3 mkdir test;\ 4 cd test;\ 5 mkdir subtest   这样就可以达到目的了。不过你可能会想为什么这里后面的cd和最后一个mkdir不需要在前面加上呢那么我们加上试试呢   如果使用了分号“ ”表示命令在同一个shell中运行而且使用“ \”链接一条命令既然是一条命令自然不能够识别后面的cd或者mkdir因为最开始的mkdir使用让终端不显示执行的指令后面的cd和mkdir是在前面操作的情况下进行的 此时直接使用命令即可。 还有一个需要注意的地方 如同 EXEcomplicated EXE:$(addprefix $(DIR_EXES)/,$(EXE)) 这样的Makefile为什么第二个赋值我们是用而不是直接呢这也是需要注意的小细节这个在之前的随笔中已经说过要是用会导致无限递归为什么呢因为EXE在复制号左边而右边又有$(EXE)(EXE的引用)这样会无限调用make报错。不信你可以试试。 最后来到最难的一个东西 sed s,\(.*\)\.o[:]*,objs/\1.o:,g $.tmp $; 这个语句才是最难的也是最费力的。 首先要简单说明一下linux中sed的用法 1.简介 sed是非交互式的编辑器。它不会修改文件除非使用shell重定向来保存结果这里这个复杂命令就用了重定向来更改。默认情况下所有的输出行都被打印到屏幕上。 sed编辑器逐行处理文件或输入并将结果发送到屏幕。具体过程如下首先sed把当前正在处理的行保存在一个临时缓存区中也称为模式空间然后处理临时缓冲区中的行完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除然后将下一行读入进行处理和显示。处理完输入文件的最后一行后sed便结束运行。sed把每一行都存在临时缓冲区中对这个副本进行编辑所以不会修改原文件。 2.定址 定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址sed将处理输入文件的所有行 3.命令与选项 sed命令告诉sed如何处理由地址指定的各输入行如果没有指定地址则处理所有的输入行。 此处sed引用此博客 参考链接http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html 3.1 sed命令  命令 功能 a\  在当前行后添加一行或多行。多行时除最后一行外每行末尾需用“\”续行  c\ 用此符号后的新文本替换当前行中的文本。多行时除最后一行外每行末尾需用\续行 i\ 在当前行之前插入文本。多行时除最后一行外每行末尾需用\续行 d 删除行 h 把模式空间里的内容复制到暂存缓冲区 H 把模式空间里的内容追加到暂存缓冲区 g 把暂存缓冲区里的内容复制到模式空间覆盖原有的内容 G 把暂存缓冲区的内容追加到模式空间里追加在原有内容的后面 l 列出非打印字符 p 打印行 n 读入下一输入行并从下一条命令而不是第一条命令开始对其的处理 q 结束或退出sed r 从文件中读取输入行 ! 对所选行以外的所有行应用命令 s 用一个字符串替换另一个 g 在行内进行全局替换   w 将所选的行写入文件 x 交换暂存缓冲区与模式空间的内容 y 将字符替换为另一字符不能对正则表达式使用y命令   3.2 sed选项  选项 功能 -e 进行多项编辑即对输入行应用多条sed命令时使用 -n 取消默认的输出 -f 指定sed脚本的文件名         4.退出状态 sed不向grep一样不管是否找到指定的模式它的退出状态都是0。只有当命令存在语法错误时sed的退出状态才不是0。       5.正则表达式元字符  与grep一样sed也支持特殊元字符来进行模式查找、替换。不同的是sed使用的正则表达式是括在斜杠线/之间的模式。 如果要把正则表达式分隔符/改为另一个字符比如o只要在这个字符前加一个反斜线在字符后跟上正则表达式再跟上这个字符即可。例如sed -n \o^Myop datafile      元字符 功能 示例 ^ 行首定位符 /^my/  匹配所有以my开头的行 $ 行尾定位符 /my$/  匹配所有以my结尾的行 . 匹配除换行符以外的单个字符 /m..y/  匹配包含字母m后跟两个任意字符再跟字母y的行 * 匹配零个或多个前导字符 /my*/  匹配包含字母m,后跟零个或多个y字母的行 [] 匹配指定字符组内的任一字符 /[Mm]y/  匹配包含My或my的行 [^] 匹配不在指定字符组内的任一字符 /[^Mm]y/  匹配包含y但y之前的那个字符不是M或m的行 \(..\) 保存已匹配的字符 1,20s/\(you\)self/\1r/  标记元字符之间的模式并将其保存为标签1之后可以使用\1来引用它。最多可以定义9个标签从左边开始编号最左边的是第一个。此例中对第1到第20行进行处理you被保存为标签1如果发现youself则替换为your。  保存查找串以便在替换串中引用 s/my/****/  符号代表查找串。my将被替换为**my** \ 词首定位符 /\my/  匹配包含以my开头的单词的行 \ 词尾定位符 /my\/  匹配包含以my结尾的单词的行 x\{m\} 连续m个x /9\{5\}/ 匹配包含连续5个9的行 x\{m,\} 至少m个x /9\{5,\}/  匹配包含至少连续5个9的行 x\{m,n\} 至少m个但不超过n个x /9\{5,7\}/  匹配包含连续5到7个9的行   1.并不是只有 / 可作为模式分割符很多符合如 , ; 都可以尤其是模式中有 / 时使用其他分割符更方便这里这个复杂例子使用逗号,做模式分隔符 sed s,\(.*\)\.o[:]*,objs/\1.o:,g $.tmp $;现在来分解这个复杂表达式首先sed s表示我们想用一个字符串替换另一个字符串这也是我们使用sed的原因它的s命令就可以达到这个效果。 s,\(.*\)\.o[:]*,objs/\1.o:,g第一次分解此时需要知道单引号是一对的即s前面的和g后面的是一个整体单引号这也是sed命令的基础至于单引号和双引号有什么区别可百度谷歌或者必应。但是我之前测试的单引号和双引号并不是我搜索所显示的那样后面再试试吧继续分解s中s是替换字符串的意思这个在上面的表格中可以查询到逗号表示模式分隔符在这种有/出现的字符串中我们选择了逗号作为分隔符号。所以下一次分解应该倒下一个逗号处 \(.*\)\.o[:]*,这里首先看 .* 它表示匹配任意字符\( \)是一个整体也是通过上面的表格得到的然后转义字符\和.o在一起把.的作用匹配除换行符的单个字符变成普通的.就是一个字符.那么这一句话就是操作字符串所有有.o的且在.0后面可以有空格匹配的零个或多个字符串。 objs/\1.o:,g这里要解释的是\1.o 这里用了转义字符\加上1这表示什么呢尤其是这个1表示的就是前面\( \)内的字符串这是组的概念如何知道是第几组呢前面的第一个\\的就是第一组用转义字符\1表示依次类推。g在sed中表示行内全局替换这样我们做一个假设例子来说明。abc.o : 用这个代表\(.*\)\.o[:]*然后objs/\1.o:,g之后呢abc.o :变成了 objs/abc.o: 这里相当于给前面的通用匹配加上了objs/前缀并且把:和.o之前的空格去掉了 最后这个$.tmp $;这不属于sed的内容了属于linux和Makefile的东西$.tmp重定向输入给前面的sed替换操作$代表目标在Makefile中$.tmp是前面的Makefile生成的重定向看方向是输入就是把$.tmp重定向输入给sed经过sed替换之后再输出重定向 到$,这个是目标。这样再回过头去看之前那个Makefile就可以看懂了。   转载于:https://www.cnblogs.com/yangguang-it/p/6818664.html
http://wiki.neutronadmin.com/news/86417/

相关文章:

  • 前端怎么做网站广州网站建设腾虎
  • 专业做网站哪家正规有没有做公章的网站
  • wordpress建网站缺点大良营销网站建设如何
  • 自己怎么做卖东西的网站表白网站是怎么做的
  • 网站开发应用到的技术名词今天31个省新增最新消息视频讲解
  • 网站带后台模板南京公司网页制作
  • 想建立一个网站怎么做wordpress slider
  • 杭州做网站小程序多少钱襄阳最新新闻消息
  • 哪些网站有设计缺点企业建设网站的母的
  • 深圳微网站搭建深圳视频网站开发
  • 做网站需要什么执照放射科网站建设
  • 眼科医院网站优化服务商淮安市做网站
  • 怎么查看一个网站做的外链互联网博客网站
  • 上海做展会的网站都有哪些新公司取名字大全参考
  • 博星卓越营销网站设计北京做冷冻牛羊肉的网站
  • 天津高端品牌网站建设海南医院网站建设
  • 东海县城乡建设局网站机械代工
  • 网站制作咨询公司wordpress add_filter
  • 临沂市建设局兰山区网站站长seo综合查询工具
  • 我公司网站开发技术优势网站建设人才有哪些
  • 深圳做营销网站制作管家婆crm123696
  • 怎么自己做刷东西的网站wordpress模板
  • 公司网站管理图片电商详情页模板
  • 万能搜索引擎网站淄博网站建设服务商
  • 关键词站长工具滨州论坛网站建设
  • 做网站后端企业管理专业
  • 有没有找项目的网站小程序开发价目表
  • 建设银行网站怎样查询贷款信息吗网站源码模块
  • c苏宁网站开发优惠劵网站怎么做
  • 做网站设计答辩问题男科医院排名最好的医院