Linux[Makefile]

Makefile基础结构

  1. 规则语法
target: prerequisites
    command

target:生成的目标(如可执行文件、.o文件)

prerequisites:依赖项(源码、头文件等)

command:构建命令(必须用Tab缩进)

示例:

makefile
hello: hello.c
    gcc -o hello hello.c

下面是模拟gcc编译文件的过程

在这里插入图片描述

其原理类似于一个栈,通过查找依赖文件,逐个生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

变量定义与使用

@默认不回显

BIN=code
CC = gcc
SRC=code.c
FLAGS=-o
RM=rm -f
$(BIN):$(SRC)
	$(CC) $(FLAGS) $(BIN) $(SRC)
.PHONY:clean
clean:
	$(RM) $(BIN)
.PHONY:print
print:
	@echo $(BIN)
	@echo $(CC)
	@echo $(SRC)
	@echo $(FLAGS)
	@echo $(RM)

预定义变量:$ @(目标名//冒号左边)、$ ^(所有依赖//冒号右边)、$<(遍历依赖)用于目录里有很多个.c文件需要编译时使用
所以上面可以优化为:

BIN=code
CC=gcc
SRC=$(wildcard *.c)  #自动识别.c结尾文件
OBJ=$(SRC:.c=.o)  #自动生成.o文件
LFLAGS=-o
CFLAGS=-c
RM=rm -f
$(BIN):$(SRC)
	$(CC) $(LFLAGS) $@ $^
%.o:%.c# 等价于code1.o,code2.o.....:code1.c,code2.c......
$(CC) $(CFLAGS) $<  #自动遍历所有.c文件
.PHONY:clean
clean:
    $(RM) $(BIN) $(OBJ)

在这里插入图片描述
在这里插入图片描述

赋值方式:=(延迟展开):=(立即展开)
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值