Makeflie学习笔记
makefile基本格式
TARGER... : DEPENDEDS...
COMMAND
...
...
TARGET:规则定义的目标。生成的目标文件的文件名或者是一个动作
DEPENDEDS:执行此规则的必须依赖条件。可以是生成可执行文件的目标文件或者某个TARGER
COMMAND:规则动作,编译文件、生成库文件、进入目录等,可以是多个,每个一行,每行以Tab开始
makefile变量
makefile预定义变量
- AR:生成静态库文件,默认值:ar
- AS:汇编编译器,默认值:as
- CC:C语言编译器,默认值:cc
- CPP:C语言编译器,默认值:$(CC) -E
- CXX:C++编译器,默认值:g++
- FC:Fortran语言编译器,默认值:f77
- RM:删除文件程序,默认值:rm -f
- ARFLAGS:生成静态库库文件程序选项,无默认值
- ASFLAGS:汇编语言编译器编译选项,无默认值
- CFLAGS:C语言编译器编译选项,无默认值
- CPPFLAGS:C语言预编译器编译选项,无默认值
- CXXFLAGS:C++编译器编译选项,无默认值
- FFLAGS:Fortran语言编译器编译选项,无默认值
makefile自动变量
- $*:目标文件文件名,不包含扩展名
- $+:所有依赖文件,依赖文件以空格分隔,以出现先后为顺序,可重复
- $<:依赖项中第一个依赖文件的名称
- $?:依赖项中所有目标文件时间戳晚的依赖文件
- $@:目标项中目标文件的名称
- $^:依赖项中所有不重复的依赖文件
用户自定义变量
用户可以定义自己的变量,调用用户自定义变量时,在前面加$,并将变量名称用括号括起来。
搜索路径
VPATH变量指定需要搜索的目录,make就会自动找到指定文件目录,自动添加到文件上
自动推导规则
使用make编译扩展名为.c的C语言文件时,源文件的编译规则不用明确给出。make会按照默认的编译规则完成编译并生成对应的.o文件。
Makeflie学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- MySQL索引实践
数据库索引本质上是一种数据结构(存储结构+算法),目的是为了加快数据检索速度. 1.索引的类型(待完善) 主键索引:给表设置主键,这个表就拥有主键索引. 唯一索引:unique 普通索引:增加某个字段 ...
- 分布式数据库PolonDB 云端发力未来数据处理需求
企业数字化转型的不断深入,传统 IT 架构和数据库早已无法适应诸如物联网.新金融.新零售.新制造等行业对于数据高吞吐.灵活扩展等需求,企业对数据库有了更高的要求. 青云QingCloud 本次推出的 ...
- mysql 错误:Table is marked as crashed and should be repaired 解决办法
遇到这个问题几个敲命令轻松搞定 1.首先进入mysql命令台: mysql -u root -p 回车 输入密码 2.查询所有的库 mysql> show databases; 3.进入数据库“ ...
- Supervisor操作相关的进程
Supervisor是用Python开发的一个客户机/服务器系统,允许用户监视和控制UNIX类操作系统上的多个进程. 功能:用于监听.启动.停止.重启一个或多个进程. 当Supervisor管理的进程 ...
- tcpdump使用和抓包分析
参考资料: http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html tcpdump可以将网络中传送的数据包的“头”完全截获下来 ...
- 阿里云用smtp无法发送邮件
无法发送邮件是因为什么网络协议的要求必须要封掉25端口,而这个解封的话弄了很长时间也没有弄开,所以就换了别的方法 这个的话我这块用的是PHPMailer 然后我把这个PHPMailer的配置文件里的 ...
- Mac App破解之路九 vscode插件破解
破解对象: luaide 破解目的:学习如何破解vscode插件 破解背景: vsscode用了这么多年,安装了很多插件,其中luaide插件是收费的. 说实话,100块并不贵, 我本来准备买的. ...
- cb02a_c++_数据结构_顺序容器_STL_list类_双向链表
/*cb02a_c++_数据结构_顺序容器_STL_list类_双向链表实例化std::list对象在list开头插入元素在list末尾插入元素在list中间插入元素,插入时间恒定,非常快.数组:中间 ...
- vs.net/vscode中使用Beetlex创建vue应用
平时在开发Vue应用则需要安装nodejs,vue cli等相关东西相对来说麻烦一些:如果你喜欢像vs.net/vscode创建普通项目一样就能开发Vue项目的话那可以尝试一下BeetleX针对Vue ...
- 图灵学院-微服务11-分布式链路跟踪Sleuth详解
当客户端访问到第一个service 1的时候,会生成当前链路追踪的一个全局的trance ID,在一次调用过Service1--Service2--Service3--Service4时,整个服务访问 ...