自动化构建-make/Makefile

前言

会写makefile是一个很重要的能力

makefile的作用:自动化构建项目

基本使用

文件内容:

bash 复制代码
myproc:myproc.cc
	g++ -o $@ $^

.PHONY:clean
clean:
	rm -rf myproc

这是最基本的使用

发现:

1.在make之后,如果你不修改文件,那么,系统就不让你make了

2.但是make clean 可以一直使用

解释:

这个其实是因为

.PHONY:clean

有了这个意思就是告诉系统忽略对比新旧文件时间问题

进一步解释:

在linux中,文件 = 内容+属性

然后系统中会存三个东西:

Access :就是最近你访问的文件的时间,但是这个可能你要累计访问好几次才会涉及一次修改

Modify :你对文件内容的修改,就会触发

Change:文件属性修改,就会触发

系统就会对比时间线,主要是看Modify,其它可能不准

myproc.cc在myproc后面的时间线话就make 不了,在前面就可以。

拓展

语法:

$() 引用变量

bash 复制代码
变量名 = 值          # 定义变量,不用 $()
$(变量名)           # 使用变量,要用 $()
$(shell 命令)       # 调用 make 函数,也用 $()

2.函数 集体调用

shell ls *.cc --shell命令行方式

wildcard *.cc --makefile自带

3.@ ^

$@ : 表示你所要生成地目标文件

$^:源文件

4.@g++ -o @ ^

这个@加了之后就会去除打印,在命令行上就看不到了(不回显命令)

5.$<

对展开的以来.cc文件/一个一个的交给g++

解剖

对于:

bash 复制代码
myproc:myproc.o 
 	gcc myproc.o -o myproc
myproc.o:myproc.s 
 	gcc -c myproc.s -o myproc.o
myproc.s:myproc.i 
	gcc -S myproc.i -o myproc.s
myproc.i:myproc.c 
相关推荐
码农学院38 分钟前
企业官网改版后 AI 引用归零的复盘:301 重定向断层让爬虫索引掉线,修复方案与恢复数据
运维·geo优化·ai优化aio
kuroomi1 小时前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
当下新鲜事1 小时前
空调机房冷冻泵与冷却泵技术分析:赛莱默B&G背包式智能变频管道泵的工程应用
运维·物联网·业界资讯
Doris__HE3 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化
千里码aicood4 小时前
基于PLC的简易三轴工件搬运平台设计
自动化·plc
科技研学社5 小时前
自动化缝制升级:支撑产业海外转移,降低建厂用工门槛
人工智能·自动化
闲云野鹤在人间6 小时前
docker 入门 | 第7章 容器监控 和 第8章 容器日志 详解
运维·docker·容器·架构·云计算
亚川楼宇自控系统数据中心厂家6 小时前
IBMS 集成如何打通数据中心的子系统数据孤
运维
蓝速科技6 小时前
桌面双屏翻译机量产调试:三类场景兼容性破局方案丨蓝速科技
运维·数据库·人工智能·科技·技术分享
见闻小天地6 小时前
脱硫脱硝塔选变频器避坑指南:四方DL500变频器使用体验分享
大数据·运维·人工智能·业界资讯