Makefile总结

一、基本格式

<target> : <prerequisites>

[tab] <commands>

target --目标文件,可以是Object File 也可以是可执行文件,还可也是标签Label;

prerequisites --生成target所需的文件或目标;

command --make需要执行的命令,可以是任何shell命令。

二、案例

CC=gcc
TARGET:=test

all:${TARGET}

C_SRCS=$(wildcard *.c)
C_OBJS=${patsubst %.c, %.o, $(C_SRCS)}

all:${TARGET}

${TARGET}:${C_OBJS}
	${CC} -o $@ $^
%.o:%.c
	${CC} -c -o $@ $<
.PHONY:clean
clean:
	rm -rf ${TARGET} *.o

$@:规则的目标文件名

$<:规则的第一个依赖文件名

$^:规则的所有依赖文件列表

$? :指代比目标更新的所有前置条件,之间以空格分隔。

         比如,规则为 t: p1 p2,其中 p2 的时间戳比 t 新,$?就指代p2。

$* :指代匹配符 % 匹配的部分。

        比如% 匹配 f1.txt 中的f1 ,$* 就表示 f1。

%.格式:代表所有该格式的文件(在vi替换命中令也使用了%代表所有)

= 是最基本的赋值

:= 是覆盖之前的值

?= 是如果没有被赋值过就赋予等号后面的值

+= 是添加等号后面的值

模式匹配

规则 1:%.o:%.c

gcc -Wall -g -c $< -o $@

规则 2:.c.o

gcc -Wall -g -c $< -o $@

规则2注意 .c.o之间不能由空格

make常用内嵌函数

函数调用

$(function arguments)

$(wildcard 模式)

当前目录下匹配模式的文件:src = $(wildcard *.c) ,获取所有.c文件

$(src:%.c=%.o), 把src的 .c替换为.o

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

shell函数 执行shell命令: $(shell ls –d */) -> 获取所有子目录

三、总结

简单的Makefile。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值