Makefile函数
Makefile中的函数有很多,在这里给大家介绍两个最常用的。
wildcard
– 查找指定目录下的指定类型的文件makefilesrc=$(wildcard *.c) //找到当前目录下所有后缀为.c的文件,赋值给src
patsubst
– 匹配替换makefileobj=$(patsubst %.c,%.o, $(src)) //把src变量里所有后缀为.c的文件替换成.o
实例
在Makefile中所有的函数都是有返回值的。
当前目录下有main.c
add.c
makefile
src=$(wildcard *.c)
等价于
src=main.c add.c
obj=$(patsubst %.c, %.o, $(src))
等价于
obj=main.o add.o
Makefile的第四个版本:
makefile
# 默认目标
all: main
target=main
src=$(wildcard ./*.c)
obj=$(patsubst %.c, %.o, $(src))
CC=gcc
CFLAGS=-I ./
$(target):$(obj)
$(CC) $^ -o $@
%.o:%.c
$(CC) -c $< $(CFLAGS) -o $@
c
#include "add.h"
#include <stdio.h>
int main(void) {
printf("%d\n", add(10, 20));
return 0;
}
c
#ifndef __SYSS_ADD_H__
#define __SYSS_ADD_H__
int add(int a, int b);
#endif //__SYSS_ADD_H__
c
#include "add.h"
int add(int a, int b) {
return a + b;
}
执行make
缺点: 每次重新编译都需要手工清理中间 .o
文件和最终目标文件