makefile规则整理
makefile规则整理
实际开发中,makefile改的多,写的少。
为了后面不要在编译链接这种地方花费太多的时间,在这里系统性的整理其规则:
基本格式
TARGET : PREREQUISITES
command1
command2
... TARGET:1个目标(.o,lable,可执行文件等等) PREREQUISITES: 一个或者多个,依赖的文件 command:
任意的shell命令;
当依赖的文件中,只要有文件修改日期比TARGET的修改日期新,或者TARGET不存 在,就会触发下面的command执行;
命令需要以TAB键开头,默认的是/bin/sh;
如果下一个命令需要建立在上一个执行,那么需要写到同一行,用分号分隔开;
命令失败,make会退出规则执行,命令前加一个'-'可以忽略出错,继续执行;
makefile的查找顺序 默认情况下,当前目录下依次查找:“GNUmakefile”、“makefile”、“Makefile”
makefile中的“include”可以将其余位置的makefile文件内容展开到当前文件;
makefile的执行顺序 第一个目标是终极目标,终极目标有且仅有一个;
不跟lable的make命令执行,会找到第一个目标开始生成,一层一层往下找依赖关系生成目标,直到第一个TARGET生成后结束;
其中的command命令执行失败,不会影响make的继续运行;
但是依赖文件的生成失败,会导致makefile报错退出;
用.PHONY可以声明一些labe,控制make的执行顺序;
makefile特殊变量 VPATH:寻找依赖文件时,当前路径下没有的情况下,可以自动去这个变量路径找
makefile自动变量 $@
规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。 $<
依赖目标中的第一个目标名字 $?
所有比目标新的依赖目标的集合。以空格分隔 $^
所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,去除重复的依赖目标,只保留一份 $+
所有依赖目标的集合。不去除重复的依赖目标
静态规则
TARGETS:TARGET-PATTERN:PRE-PATTERN
command 这个用法其实就是将“多目标规则”和“目标依赖文件模式通配”相结合。
TARGET-PATTERN通配TARGETS,PRE-PATTERN是对TARGET-PATTERN进行一个二次解析的替换,最终类似与:TARGETS:PRE-PATTERN的效果。
命令参数 make -h :输出help信息(其实有这个就足够了)
make -n :不执行命令,只显示命令,用于调试
make -s :禁止命令显示
make -C :cd到一个目录,然后执行make
make -f :指定make文件
make -B :认为所有的目标都更新,重编译
变量的使用 1. $(var)进行var的使用;
2. $$,表示$字符
3. := ,覆盖之前的值,值决定于它在makefile中的位置,而不是整个makefile展开后的最终值
4. ?= ,如果没有被赋值过就赋予等号后面的值
5. = , make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值
6. +=, 追加变量的值
makefile规则整理的更多相关文章
- Makefile 规则的使用
1.Makefile格式 //最终目标 all: led.o //依赖 arm-linux-ld -Tled.lds -o led.elf led.o //命令 arm-linux-objcopy - ...
- Makefile规则③规则语法、依赖、通配符、目录搜寻、目标
规则语法 通常规则的语法格式如下: TARGETS : PREREQUISITES COMMAND ... 或者: TARGETS : PREREQUISITES ; COMMAND COMMAND ...
- Sonar 常用代码规则整理(二)
摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ============ ...
- Sonar 常用代码规则整理(一)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...
- 单元测试系列之十:Sonar 常用代码规则整理(二)
摘要:帮助公司部署了一套sonar平台,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ======== ...
- 单元测试系列之九:Sonar 常用代码规则整理(一)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...
- 编写Makefile规则
一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 ...
- 【ASM C/C++】 Makefile 规则说明
make 命令会自动读取当前目录下的 Makefile 文件[31],完成相应的编译步骤.Makefile 由一组规则(Rule)组成,每条规则的格式是:target ... : prerequisi ...
- 自动构建Makefile(1)--C/C++编译流程&Makefile规则简介
前言: 大家在Windows上使用VS构建C/C++程序时,不需要自己编辑略显晦涩的Makefile文件,而对于初学者而言, 他们甚至没意识到它的存在.VS是自动生成Makefile文件, 并构建 ...
随机推荐
- caffe 输入图像图像加高斯噪声
这是在frcnn_data_layer的操作,即读图片的操作 if (param.gaussian_noise()) { CHECK(img.type() == CV_8UC3) << & ...
- git提交远程报错[rejected] master -> master (fetch first)
1 先下载git for windows 然后一直点下一步安装. 2 安装之后,选择git gui.生成ssh 链接 git 公钥. 用命令也可以: $ ssh-keygen -t rsa -C &q ...
- C#接口定义
C#接口定义 C#不支持多重继承,但是客观世界出现多重继承的情况又比较多.为了避免传统的多重继承给程序带来的复杂性等问题,C# 提出了接口的概念.通过接口可以实现多重继承的功能. 继承该接口的类或结 ...
- JavaServlet 路径书写总结
在写javaweb项目的时候,总会遇到路径书写的问题,现在将其作个总结. 在javaweb中需要书写路径的地方主要有这四大类: 客服端路径 超链接 表单 重定向 服务器端路径 转发 包含 资源获取路径 ...
- REST Adapter实现SAP PI中的增强XML/JSON格式转换(转载)
SAP标准的REST adapter有着XML/JSON转换的功能,它很有用,因为一方面SAP PI/PO内部以XML格式处理数据,而另一方面,在处理REST架构风格的时候,JSON才是事实上的格式. ...
- 使用select2 宽度自适应
加一个CSS属性:style = "width : 100%"
- 你们知道SEO每天都在做什么吗?
医院也有做SEO的,专门负责医院网站优化工作,那么医院的SEO每天都做什么呢?偶然见到一篇文章,转载来分享给大家.感觉写的很实在. 大凡做seo工作的人都知道seo工作者每天都要做大量的外链,像有些个 ...
- 关于移动端video标签层级问题
这是在微信中正常页面,就是用了一个原生video标签没做任何处理.然后顶部是固定页面顶端的,这个时候向上滑动页面时,会出现下图现象 这个时候正常人都会想到z-index问题,我也是这样想的,可惜很抱歉 ...
- 一行代码搞定checkbox全选和全不选
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...
- python3 练习题100例 (十七)四位车号问题
#!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'Fan Lijun' import math for i in range(1 ...