Makefile常用笔记

tech2023-09-04  92

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 源文件地址
最新回复(0)