随笔分类 -  Makefile

摘要:最近写了一个递归Makefile,目的是既可以实现子模块的单独编译,也可以不做任何修改就和整个程序的整体进行无缝衔接的编译。具体的思路是借助第三方文件,将子模块编译好的.o文件的路径自动写到config.mk文件中,在总控Makfile中只需要include这个config.mk就可以。单个模块的编 阅读全文
posted @ 2017-01-18 20:17 Abnor 编辑
摘要:两个隐含规则; 1. 将所有的 的依赖自动推导为 并使用规则 得到目标。这个规则中只有 是隐含规则中有的,后面两个变量是留给用户使用的,如果 不够用,可以通过设置他们来改变这条隐含规则,有了这条隐含规则,下面的写法是被允许的 2. 目标依赖于 ,其生成命令是: 。这个规则对于多个被依赖的目标文件同样 阅读全文
posted @ 2016-10-15 22:35 Abnor 编辑
摘要:subst字符串替换函数 ,把 字符串替换成``,返回被替换过的字符串 patsubst模式字符串替换函数 ,查找 ,符合的话,则以 可以包括通配符 表示任意长度的字符串,如果 %`, 则 %` 将是 %` 所代表的字符串 strip 把字符串去掉开头和结尾的空格,结果是 “a b c” finds 阅读全文
posted @ 2016-10-13 08:09 Abnor 编辑
摘要:自定义变量 是最基本的赋值,会把整个makefile展开之后再决定是多少 是覆盖之前的值,和=不同,和赋值的位置有关 是如果没有被赋值过就赋予等号后面的值,赋过了就不管了 是添加等号后面的值 变量的使用 和shell一样,makefile通过 来读取变量 的值,对于 本身,使用 读取 变量替换 注意 阅读全文
posted @ 2016-10-13 08:08 Abnor 编辑
摘要:@ makefile会把将要执行的命令行在命令执行前输出到屏幕上,使用 可以避免显示出命令本身 若 则`$make 正在编译…` 若 则`$make`显示: override 如果一个变量的值需要在编译选项中指定或由系统传入,那么makefile中可以使用override关键字来设置,使这个变量的赋 阅读全文
posted @ 2016-10-13 08:06 Abnor 编辑
摘要:目标 即我们最终要生成的文件,make默认生成第一个目标,注意 makefile中 和空格不是一回事,规则使用 缩进,编辑器不要设置诸如“将tab替换为空格之类的选项”,目标的结构如下 伪目标 无论如何也要执行的目标,需要使用 标识 常见伪目标 是所有目标的伪目标,功能是编译所有目标 删除所有被ma 阅读全文
posted @ 2016-10-13 07:39 Abnor 编辑