初识makefile
其基本用法是:
1、make,使用makefile作为规则文件
2、make -f mf,使用mf作为makefile
3、make all,make clean 指定目标
4、make CPP=g++ 宏定义替换
make的重点在makefile的内容
0、基本格式
# comment
target: dependencyrule
若target时间比dependency早,则根据rule生成target
注:rule前面是tab,不是空格
1、简单的makefile
hello.exe: hello.cppg++ -o hello.exe hello.cpp
2、宏 macro
使用宏可以方便替换不同的工具
CPP = g++
hello.exe: hello.cpp$(CPP) -o hello.exe hello.cpp
这里CPP 就是一个宏定义,make会根据规则把它替换为g++
make自己定义了若干内部宏,常见的有:
$?:比目标的修改时间更晚的那些依赖模块表
$@:当前目标的全路径名。可用于用户定义的目标名的相关行中
$<:比给定的目标文件时间标记更新的依赖文件名
$*:去掉后缀的当前目标名。例如,若当前目标是pro.o,则$*表示pro
3、后缀规则 suffix rule
可以使用后缀规则,缩短时间
.SUFFIXES: .exe .cpp
.cpp.exe: # make exe from cppg++ -o $@ $<
hello.exe: hello.cpp
4、默认目标 default target
经常看见make,后面什么也没有指定,说明使用了默认目标
第一个目标就是默认目标
all:\hello.exe\test.exe
hello.exe: hello.cppg++ -o hello.exe hello.cpp
test.exe: test.cgcc -o test.exe test.c
5、一个完整的例子
# complete example
CPP = g++
CC = gcc
OFLAG = -o
.SUFFIXES: .exe .cpp .c .obj
.cpp.exe:$(CPP) $(OFLAG) $@ $<
.obj.exe:$(CC) $(OFLAG) $@ $<
.c.obj:$(CC) $(OFLAG) $@ -c $<all:\hello.exe\test.exe
hello.exe: hello.cpp
test.exe: test.obj
test.obj: test.cclean:del *.exedel *.obj
参考:
1、TICPP_VOL1_chapter3
2、http://blog.csdn.net/it_yuan/article/details/8649407
转载于:https://www.cnblogs.com/xkxjy/p/3672252.html
初识makefile相关推荐
- 【Makefile由浅入深完全学习记录2】初识 makefile 的结构
继续学习makefile,希望尽快掌握makefile好在面试中更好的掌握方向!加qq1126137994一起学习更多技术!! 1.回顾 makefile的意义: makefile用于定义源文件之间的 ...
- AUTOSAR从入门到精通100讲(三十)-makefile原理及实战案例
一 初识Makefile make是一种用于项目编译的应用程序,本质是一种脚本.而Makefile则是对make脚本的规则描述. 仅仅是写脚本编译项目的话shell脚本也是可以做的,用make的原因在 ...
- 迅为IMX6ULL开发板Linux学习教程
1800+页使用手册(持续更新)+入门视频教程+实战视频教程 关注VX公众号:迅为电子 , 回复 :终结者,免费获取产品资料 让教程更细致,终结入门难! 所有教程由迅为原创,是迅为工作多年的工程师 ...
- makefile初识
Makefile经典教程(掌握这些足够) 转载 2012年07月31日 15:28:42 标签: makefile / 编译器 / unix / include / shell / 432908 编辑 ...
- 【AI初识境】深度学习中常用的损失函数有哪些?
这是专栏<AI初识境>的第11篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 今天来说说深度学习中常见的损失函数(loss),覆盖分类,回归任务以及生成对抗网络,有了目 ...
- 【AI初识境】给深度学习新手开始项目时的10条建议
这是专栏<AI初识境>的第12篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 在成为合格的深度学习算法工程师,尤其是工业界能够实战的调参选手之前,总会踏足很多的坑. 今 ...
- 【AI初识境】深度学习模型评估,从图像分类到生成模型
文章首发于微信公众号<有三AI> [AI初识境]深度学习模型评估,从图像分类到生成模型 这是<AI初识境>第10篇,这次我们说说深度学习模型常用的评价指标.所谓初识,就是对相关 ...
- 【AI初识境】如何增加深度学习模型的泛化能力
文章首发于微信公众号<有三AI> [AI初识境]如何增加深度学习模型的泛化能力 这是专栏<AI初识境>的第9篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. ...
- 【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?
文章首发于微信公众号<有三AI> [AI初识境]被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么? 这是专栏<AI初识境>的第8篇文章.所谓初识,就是对相关技术有 ...
最新文章
- python怎么检查数据库实例能否链接_python pymysql链接数据库查询结果转为Dataframe实例...
- SAP 常用业务数据表设计
- HDU1588(矩阵连乘求和)
- 第一百二十四期:2019年臭名昭著的勒索软件,网络钓鱼和僵尸网络
- .NET二级域名共享Session
- 基因行业容器存储解决方案
- mongodb常用语句(集合操作)
- pytorch_CNN实现文本情感分类
- k8s学习笔记-环境搭建篇
- 牛客《机器学习》习题收集整理
- python的浮点数_python 浮点数 转 整数python函数每日一讲 - all()
- 大压缩文件解压错误,台服wow common-2.MPQ 文件损坏
- namenode无法启动,There appears to be a gap in the edit log. We expected txid 10323, but got txid 10324.
- 大航海时代2阿兰攻略(SFC日版)(续)
- docker学习笔记---基础入门
- C语言人物复杂移动与异步输入
- 推荐算法学习笔记--DIN篇
- 雷电html代码,基于HTML5的游戏制作(雷电飞机设计游戏)
- input file限制上传文件类型 后缀名
- cubemx 使用 学习跳转链接
热门文章
- Java动态代理的应用
- 【Python-ML】SKlearn库K近邻(KNN) 使用
- 高并发MPP查询引擎Impala初识
- (转载)安全漏洞概念及分类
- 开关电源怎么测试文波_示波器测试开关电源纹波的方法
- python逐行读取json_如何用python读取json文件里指定的数据
- JS中 let 和var的区别
- ​​​​​​​​​​​​​​使用dom方式遍历文档||获取元素||从元素中获取数据
- 函数||值传递||函数的常见样式||函数的声明||函数的分文件编写
- Python 技术篇-用paramiko库实现linux服务器文件下载到winodws本地实例演示