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 源文件地址

878

被折叠的 条评论
为什么被折叠?



