Makefile常用笔记

Makefile备忘笔记
注释方法 : #是单行注释(shell、perl 脚本也是使用 # 字符作为注释符)
关键概念:$@,$^,$<代表的意义分别是:$@:目标文件,$^:生成目标文件的所有的依赖文件,$<:第一个依赖文件

VPATH的作用:
在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中。所以,当 make 需要去找寻文 件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径告诉 make,让 make 在自动去找。用法如下直接添加编译所需源文件路径

VPATH = \
	${API_DIR}/Api/core/src \
	./platform/src/

一般写法
INCLUDES 变量存放头文件位置 记住加 -I 命令

INCLUDES = \
	-I. \
	-I${API_DIR}/Api/core/inc \
	-I./platform/inc

LIB_SRCS 变量存放编译使用库位置

LIB_SRCS = \
	vl53l0x_api_calibration.c \
	vl53l0x_api_core.c \
	vl53l0x_api_ranging.c \
	vl53l0x_api_strings.c \
	vl53l0x_api.c \
	vl53l0x_platform.c

一份写的比较好的makefile文件用于参考

CC = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)ar
RM = rm

CFLAGS = -O0 -g -Wall -c

OUTPUT_DIR = bin
OBJ_DIR = obj

TARGET_LIB = $(OUTPUT_DIR)/libVL53L0X_Rasp.a

API_DIR = ./API_DIR

INCLUDES = \
	-I. \
	-I${API_DIR}/Api/core/inc \
	-I./platform/inc

VPATH = \
	${API_DIR}/Api/core/src \
	./platform/src/

LIB_SRCS = \
	vl53l0x_api_calibration.c \
	vl53l0x_api_core.c \
	vl53l0x_api_ranging.c \
	vl53l0x_api_strings.c \
	vl53l0x_api.c \
	vl53l0x_platform.c

LIB_OBJS  = $(LIB_SRCS:%.c=$(OBJ_DIR)/%.o)

EXAMPLES_SRC = $(wildcard examples/*)
EXAMPLES_BIN = $(EXAMPLES_SRC:examples/%.c=$(OUTPUT_DIR)/%)


.PHONY: all
all: ${TARGET_LIB}

$(TARGET_LIB): $(LIB_OBJS)
	mkdir -p $(dir $@)
	$(AR) -rcs $@ $^

$(OBJ_DIR)/%.o:%.c
	mkdir -p $(dir $@)
	$(CC) $(CFLAGS) $(INCLUDES) $< -o $@

$(EXAMPLES_BIN): bin/%:examples/%.c
	mkdir -p $(dir $@)
	$(CC) -L$(OUTPUT_DIR) $^ -lVL53L0X_Rasp  $(INCLUDES) -o $@

examples:${OUTPUT_DIR} ${TARGET_LIB} $(EXAMPLES_BIN)

.PHONY: clean
clean:
	-${RM} -rf ./$(OUTPUT_DIR)/*  ./$(OBJ_DIR)/*

嘿嘿,添加自己写的makefile文件忘了就看看

CC = gcc
AR = ar
RM = rm

LIB_DIR  = -L./src 
LIB_name = -lVL53L0X_Rasp

INCLUDE = -I./inc \
          -I./platform/inc

VPATH =   ./src \
	      ./platform/src

target = vl53l0x_ContinuousRanging_Example

$(target): vl53l0x_ContinuousRanging_Example.c   #表示target的依赖文件是vl53l0x_ContinuousRanging_Example.c
	mkdir build
	$(CC) $^ $(LIB_DIR) $(LIB_name) $(INCLUDE) -o ./build/$(target) 


#write by kuso
#LIB_DIR  库文件地址
#LIB_name 库名
#INCLUDE  头文件地址
#VPATH    源文件地址


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值