自动化构建-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 
相关推荐
杨云龙UP16 分钟前
MySQL 主从复制管理:暂停、恢复、清理主从关系及命令执行位置
运维·数据库·mysql·主从配置·主从命令·reset replica·清除复制
Android系统攻城狮35 分钟前
Linux FFmpeg深度解析之avcodec_parameters_from_context调用流程与实战(十六)
linux·运维·ffmpeg·音视频进阶·ffmpeg音视频·车载音视频进阶
隔窗听雨眠39 分钟前
从存储引擎到执行计划:OceanBase高效运维的调优逻辑与工程实践
运维·oceanbase
运维行者_1 小时前
供应链安全成最大风险源,企业如何构建可控的运维体系?
运维·开发语言·网络·数据库·安全·云计算·流量监控
xiaoyunxuexibiji1 小时前
采购协同管理:从备货计划、进度确认到到货签收
大数据·运维·人工智能
画中有画1 小时前
在自动化脚本中调用其他脚本文件
运维·自动化
Android系统攻城狮1 小时前
Linux FFmpeg深度解析之avcodec_alloc_context3调用流程与实战(十四)
linux·运维·ffmpeg·车载音视频·音视频进阶·ffmpeg音视频进阶
老李IT笔记1 小时前
抹除之后机器上的受管应用可以留下:这一步省掉的是哪段时间
运维·服务器
环境栈笔记2 小时前
指纹浏览器安卓怎么用?从运行位置到功能验收,先把三种方案分清
前端·人工智能·后端·自动化
李纲明2 小时前
WordPress 定时发布不准点或备份/邮件从不跑:先分清 WP-Cron 触发与 DISABLE_WP_CRON,再查回环与系统 Cron
运维·性能优化·wordpress·定时任务·devdiy·wp-cron