Linux下的系统编程——makefile入门(四)

前言:

或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。

一、makefile: 管理项目。

设置文件add.c div1.c sub.c hello.c

命名:makefile Makefile --- make 命令

1. 1 个规则:

目标:依赖条件

(一个tab缩进)命令

makefile中的规则

(1)目标的时间必须晚于依赖条件的时间,否则,更新目标

(2)依赖条件如果不存在,找寻新的规则去产生依赖条件。

ALL:指定 makefile 的终极目标。

(目的是确定最终退出的目标)

2. 2 个函数:

(1)src = $(wildcard ./*.c)

匹配当前工作目录下的所有.c 文件。将文件名组成列表,赋值给变量 src。 src = add.c sub.c div1.c

(2)obj = (**patsubst** %.c, %.o, (src))

将参数3中,包含参数1的部分,替换为参数2。 obj = add.o sub.o div1.o

clean: (没有依赖)

-rm -rf $(obj) a.out "-":作用是,删除不存在文件时,不报错。顺序执行结束。

3. 3 个自动变量:

(1)$@

在规则的命令中,表示规则中的目标。

(2)$^

在规则的命令中,表示所有依赖条件。

(3)$<

在规则的命令中,表示第一个依赖条件。如果将该变量应用在模式规则中,它可将

依赖条件列表中的依赖依次取出,套用模式规则。

4.模式规则:

%.o:%.c

gcc -c $< -o %@

(1)静态模式规则:

$(obj):%.o:%.c

gcc -c $< -o %@

(2)伪目标:

.PHONY: clean ALL

参数:

-n:模拟执行make、make clean 命令。

-f:指定文件执行 make 命令。 xxxx.mk

变化1:

变化2:

相关推荐
单片机系统设计2 分钟前
基于STM32单片机的智能恒温水壶设计
c语言·stm32·单片机·嵌入式硬件·毕业设计·智能温水壶
zy happy8 分钟前
Ubuntu E: 无法定位软件包 net-tools
linux·运维·ubuntu
阿巴~阿巴~9 分钟前
深入解析IP分片:从原理到现代实践的全面指南
运维·服务器·网络·网络协议·tcp/ip·ip
环黄金线HHJX.9 分钟前
【MCP: Tuan编程 + Qt架构 + QoS - 量子-经典混合计算管理控制平台】
ide·人工智能·qt·编辑器·量子计算
cute_ming12 分钟前
浅谈提示词工程:企业级系统化实践与自动化架构(三)
人工智能·ubuntu·机器学习·架构·自动化
进击的小头15 分钟前
18_C语言算法面试与进阶:高频算法题实战与学习路线规划
c语言·算法·面试
烛衔溟18 分钟前
C语言并发编程:Windows线程
c语言·c++·windows·性能优化·多线程·并发编程·线程同步
阿巴~阿巴~19 分钟前
IPv4地址的边界与智慧:特殊用途、枯竭挑战与应对策略全景解析
运维·服务器·网络·网络协议·tcp/ip·ipv4·ipv4地址枯竭
噎住佩奇19 分钟前
Shell提示符变为bash-4.2
linux·ssh
开开心心就好21 分钟前
系统清理工具清理缓存日志,启动卸载管理
linux·运维·服务器·神经网络·cnn·pdf·1024程序员节