0%

CS-makefile使用

三要素

目标:依赖
命令

自动变量

$< 当前规则中的第一个依赖
$@ 当前规则中的目标
$^ 规则中的所有依赖

函数

获取指定目录下的所有.c文件
src=$(wildcard ./*.c)

.c替换为.o
obj=$(patsubst ./%.o, ./%.c, $(src))

version_1:

app:main.c add.c sub.c mul.c
gcc main.c add.c sub.c mul.c -o app

version_2:

app:main.o add.o sub.o mul.o
gcc main.o add.o sub.o mul.o -o app

main.o:main.c
gcc -c main.c

add.o:add.c
gcc -c add.c

sub.o:sub.c
gcc -c sub.c

mul.o:mul.c
gcc -c mul.c

verson_3:

obj=main.o add.o sub.o mul.o
target=app
CC = gcc
CPPFLAGS = -I
$(target) : $(obj)
$(CC) $(obj) -o $(target)

%.o:%.c
$(CC) -c $< -o $@

version_4:

target=app
CC = gcc
CPPFLAGS = -I
src=$(wildcard ./*.c)
obj=$(patsubst ./%.o, ./%.c, $(src))

$(target) : $(obj)
$(CC) $(obj) -o $(target)

%.o:%.c
$(CC) -c $< -o $@

.PHONY:clean
clean:
rm $(obj) $(target) -f