make是常用的一个管理工程编译的工具
其基本用法是:
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相关推荐

  1. 【Makefile由浅入深完全学习记录2】初识 makefile 的结构

    继续学习makefile,希望尽快掌握makefile好在面试中更好的掌握方向!加qq1126137994一起学习更多技术!! 1.回顾 makefile的意义: makefile用于定义源文件之间的 ...

  2. AUTOSAR从入门到精通100讲(三十)-makefile原理及实战案例

    一 初识Makefile make是一种用于项目编译的应用程序,本质是一种脚本.而Makefile则是对make脚本的规则描述. 仅仅是写脚本编译项目的话shell脚本也是可以做的,用make的原因在 ...

  3. 迅为IMX6ULL开发板Linux学习教程

    1800+页使用手册(持续更新)+入门视频教程+实战视频教程 关注VX公众号:迅为电子 ,  回复 :终结者,免费获取产品资料  让教程更细致,终结入门难! 所有教程由迅为原创,是迅为工作多年的工程师 ...

  4. makefile初识

    Makefile经典教程(掌握这些足够) 转载 2012年07月31日 15:28:42 标签: makefile / 编译器 / unix / include / shell / 432908 编辑 ...

  5. 【AI初识境】深度学习中常用的损失函数有哪些?

    这是专栏<AI初识境>的第11篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 今天来说说深度学习中常见的损失函数(loss),覆盖分类,回归任务以及生成对抗网络,有了目 ...

  6. 【AI初识境】给深度学习新手开始项目时的10条建议

    这是专栏<AI初识境>的第12篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 在成为合格的深度学习算法工程师,尤其是工业界能够实战的调参选手之前,总会踏足很多的坑. 今 ...

  7. 【AI初识境】深度学习模型评估,从图像分类到生成模型

    文章首发于微信公众号<有三AI> [AI初识境]深度学习模型评估,从图像分类到生成模型 这是<AI初识境>第10篇,这次我们说说深度学习模型常用的评价指标.所谓初识,就是对相关 ...

  8. 【AI初识境】如何增加深度学习模型的泛化能力​​​​​​​

    文章首发于微信公众号<有三AI> [AI初识境]如何增加深度学习模型的泛化能力 这是专栏<AI初识境>的第9篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. ...

  9. 【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?​​​​​​​

    文章首发于微信公众号<有三AI> [AI初识境]被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么? 这是专栏<AI初识境>的第8篇文章.所谓初识,就是对相关技术有 ...

最新文章

  1. python怎么检查数据库实例能否链接_python pymysql链接数据库查询结果转为Dataframe实例...
  2. SAP 常用业务数据表设计
  3. HDU1588(矩阵连乘求和)
  4. 第一百二十四期:2019年臭名昭著的勒索软件,网络钓鱼和僵尸网络
  5. .NET二级域名共享Session
  6. 基因行业容器存储解决方案
  7. mongodb常用语句(集合操作)
  8. pytorch_CNN实现文本情感分类
  9. k8s学习笔记-环境搭建篇
  10. 牛客《机器学习》习题收集整理
  11. python的浮点数_python 浮点数 转 整数python函数每日一讲 - all()
  12. 大压缩文件解压错误,台服wow common-2.MPQ 文件损坏
  13. namenode无法启动,There appears to be a gap in the edit log. We expected txid 10323, but got txid 10324.
  14. 大航海时代2阿兰攻略(SFC日版)(续)
  15. docker学习笔记---基础入门
  16. C语言人物复杂移动与异步输入
  17. 推荐算法学习笔记--DIN篇
  18. 雷电html代码,基于HTML5的游戏制作(雷电飞机设计游戏)
  19. input file限制上传文件类型 后缀名
  20. cubemx 使用 学习跳转链接

热门文章

  1. Java动态代理的应用
  2. 【Python-ML】SKlearn库K近邻(KNN) 使用
  3. 高并发MPP查询引擎Impala初识
  4. (转载)安全漏洞概念及分类
  5. 开关电源怎么测试文波_示波器测试开关电源纹波的方法
  6. python逐行读取json_如何用python读取json文件里指定的数据
  7. JS中 let 和var的区别
  8. ​​​​​​​​​​​​​​使用dom方式遍历文档||获取元素||从元素中获取数据
  9. 函数||值传递||函数的常见样式||函数的声明||函数的分文件编写
  10. Python 技术篇-用paramiko库实现linux服务器文件下载到winodws本地实例演示