一步步的理解makefile

本文详细介绍了Makefile的基本概念、命令结构以及如何使用,包括目标与依赖、命令执行规则、变量替换和构建流程示例,帮助读者掌握Makefile在项目构建中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概要

一步步的理解makefile

2.代码

makefiel 命令原型
#target...:prerequisites...
#command

#原型
目标:依赖
命令

#举例
西红柿炒鸡蛋(最终要生成的东西):西红柿 鸡蛋(需要的原材料)
炒(动作)
------------------------
test :main.c sub.c add.c
	gcc main.c add.c sub.c
------------------------------
test:main.o add.o sub.o
	gcc main.o sub.o add.o -o test
main.o:main.c
	gcc -c main.c -o main.o
add.o:add.c
	gcc -c add.c -o add.o
sub.o:sub.c
	gcc -c sub.c -o sub.o
------------------------------
test:main.o add.o sub.o
	gcc main.o sub.o add.o -o test
main.o:main.c
	gcc -c main.c -o main.o
add.o:add.c
	gcc -c add.c -o add.o
sub.o:sub.c
	gcc -c sub.c -o sub.o
.PHONY:clean
clean:
	rm *.o
------------------------------
all:test test1
test:main.o add.o sub.o
	gcc main.o sub.o add.o -o test
main.o:main.c
	gcc -c main.c -o main.o
add.o:add.c
	gcc -c add.c -o add.o
sub.o:sub.c
	gcc -c sub.c -o sub.o
.PHONY:clean
clean:
	rm *.o
------------------------------
SRC = main.o add.o sub.o
test:$(SRC) 
	gcc $(SRC) -o test
main.o:main.c
	gcc -c main.c -o main.o
add.o:add.c
	gcc -c add.c -o add.o
sub.o:sub.c
	gcc -c sub.c -o sub.o
.PHONY:clean
clean:
	rm *.o
--------------------
#SRC ?= main.o 第一个有效
#SRC := main.o 最后一个有效
#SRC += main.o 全部有效
#$^ 所有不重复的目标依赖文件,以空格分开
#$@ 目标文件的完整名称
SRC = main.o add.o sub.o
test:$(SRC) 
	gcc $^ -o $@
main.o:main.c
	gcc $^ -o $@
add.o:add.c
	gcc $^ -o $@
sub.o:sub.c
	gcc $^ -o $@
.PHONY:clean
clean:
	rm *.o
--------------------------
#wildcard $(wildcard PATTERN...)//功能是匹配一个文件
#patsubst 语法:$(patsubst <pattern>,<replacement>,<text>)//含义:把text里面的pattern格式的内容替换成replacement内容。
#wildcard *.c 的含义是:找到所有的.c文件。
#patsubst %.c ,%.o,$(SRC)的含义是:把所有的.c文件替换成.o文件。

#CC 解释:C编译器的名称,默认值为gcc。
#CFLAGS c编译器的选项,无默认值。 
#CFLAGS = -c -Wall -g -I include 解释: Wall 产生更多的警告, -g 是 GDB 调试

SRC = $(wildcard *.c)
OBJ = $(patsubst %.c,%.o,$(SRC))
CFLAGS = -c -Wall -g -I include
test:$(OBJ)
	$(CC) $^ -o $@
%.o:%.c
	%(CC) $(CFLAGS) $^ -o $@
.PHONY:clean
clean:
	rm *.o
--------------------------

引用: 

​​​​​​一篇文章掌握Makefile - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值