跟我一起学Makefile】的更多相关文章

紧接着跟我学Makefile(二)继续学习:变量高级用法 (1)变量值的替换 :替换变量中的共有的部分,其格式是“$(var:a=b)”或是“${var:a=b}”,把变量“var”中所有以“a”字串“结尾”的“a”替换成“b”字串.这里的“结尾”意思是“空格”或是“结束符”. foo := a.o b.o c.o bar := $(foo:.o=.c) 第二行:把“$(foo)”中所有以“.o”字串“结尾”全部替换成“.c”,所以我们的“$(bar)”的值就是“a.c b.c c.c”. (2…
Unix.Linux必学知识哈哈,网上看到一哥们写得挺好挺详细的,直接复制地址就分享哈哈哈. 跟我一起写 Makefile(一) 概述 跟我一起写 Makefile(二) make是如何工作的 跟我一起写 Makefile(三) Makefile 总述 跟我一起写 Makefile(四) 书写规则 跟我一起写 Makefile(五) 跟我一起写 Makefile(六) 书写命令 跟我一起写 Makefile(七) 使用变量 跟我一起写 Makefile(八) 变量和使用条件判断 跟我一起写 Ma…
定义模式规则 使用模式规则来定义一个隐含规则.一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有“%”字符.“%”的意思是表示一个或多个任意字符.在依赖目标中同样可以使用“%”,只是依赖目标中的“%”的取值,取决于其目标. 有一点需要注意的是,“%”的展开发生在变量和函数的展开之后,变量和函数的展开发生在make 载入 Makefile 时,而模式规则中的“%”则发生在运行时. 模式规则介绍 :模式规则中,至少在规则的目标定义中要包含“%”,否则,就是一般的规则.目标中的“%”定义…
概述 什么是makefile?或许很多Winodws程序员都不知道这个东西,因为那些Windows IDE都为你做了这个工作,但我觉得要做一个好的和professional的程序员,makefile还是要懂的.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力. 因为,makefile关系到了整个工程的编译规…
shell 函数 :和反引号“`”是相同的功能 . shell 函数把执行操作系统命令后的输出作为函数返回. contents := $(shell cat foo) files := $(shell echo *.c)这个函数会新生成一个 Shell 程序来执行命令,所以你要注意其运行性能,如果你的 Makefile 中有一些比较复杂的规则,并大量使用了这个函数,那么对于你的系统性能是有害的.特别是 Makefile 的隐晦的规则可能会让你的 shell 函数执行的次数比你想像的多得多 控制…
文件名操作函数 每个函数的参数字符串都会被当做一个或是一系列的文件名来对待. $(dir <names...>) 名称:取目录函数——dir. 功能:从文件名序列<names>中取出目录部分.目录部分是指最后一个反斜杠(“/”)之前的部分.如果没有反斜杠,那么返回“./”. 返回:返回文件名序列<names>的目录部分. 示例: $(dir src/foo.c hacks)返回值是“src/ ./”. $(notdir <names...>) 名称:取文件函…
命令出错: 每当命令运行完后, make 会检测每个命令的返回码,如果命令返回成功,那么 make 会执行下一条命令. 如果一个规则中的某个命令出错了(命令退出码非零),那么 make 就会终止执行当前规则,这将有可能终止所有规则的执行. 为了做到忽略命令的出错,我们可以在 Makefile 的命令行前加一个减号“-”(在Tab 键之后),标记为不管命令出不出错都认为是成功的. clean: -rm -f *.o 还有一个全局的办法是,给 make 加上“-i”或是“--ignore-error…
1.首先,把源文件编译生成中间代码文件,Windows下.obj文件,unix下.o文件,即Object File.这个动作叫编译(compile) 把大量的Object File合并执行文件,叫做链接(link) 2.在编译时,编译器只检测程序语法.函数.变量是否被申明.如果函数为被申明,编译器会给出一个警告,但可以生成object File. 而在链接程序时,连接器会在所有的object File中寻找函数的实现,如果找不到,就会报链接错误码(link ERROR) Makefile的规则:…
命令的回显: 通常,make在执行命令之前都会把执行的命令进行输出,例如: 关闭命令回显有以下几种方式: 每个需要关闭回显的命令行之前加上”@”符号: 执行make时机上参数-s 或 –slient进制所有执行命令的显示. 在Makefile中使用没有以来的特殊目标时,.SLIENT也可以禁止所有命令的回显. 命令的执行 在Makefile中书写在同一行中的多个命令属于一个完整的shell命令行,书写在独立行的一条命令是一个独立的shell命令行.所以需要注意:在一个规则的命令中,命令行cd改变…
多目标规则 多目标规则,可以简单的理解为是一种将多条具有1)相同依赖和2)相同生成命令的规则,合并成一条规则的语法,其基本格式为: targets...: prerequisites... commands ... 假设我们有以下makefile: 利用多目标规则,可以将makefile改写成makefile文件 这里我们可以观察到,虽然多目标规则中要求命令必须相同,但是配合上自动化变量的使用,就是可以针对不同的目标有不同的执行结果. 多规则目标 Makefile中,一个目标可以同时出现在多条规…