20231023_InSituLab_emb/InsituLabProject_XWJ/DataServicePlatform/makefile

42 lines
1.3 KiB
Makefile
Raw Normal View History

#指定项目.c存在的文件夹
SRC_DIR= ./src/drv ./src/tool ./src/usr
#设置依赖文件夹搜索顺序,“:”为分隔符
vpath %.c ./src/drv: ./src/tool: ./src/usr:
#输出文件名
OUTPUT:= DataAcquistionSystem
#输出目录
OUTPUT_DIR= ./exe
#使用标准编译,-g:表示可以使用gdb调试,-Wall:所有错误和警告在编译的时候都打出来,-O2:-代码优化
#交叉编译
CC:= aarch64-linux-gnu-gcc
CXX:= aarch64-linux-gnu-g++
#包含路径
INCLUDE_DIR+= -I ./src/drv
INCLUDE_DIR+= -I ./src/tool
INCLUDE_DIR+= -I ./src/usr
#编译链库
LIB:= -lrt -lpthread -lm -ljson-c -lcurl -lnats -lmodbus
#遍历所有子目录中的.c文件
SRC = $(foreach dir,$(SRC_DIR),$(wildcard $(dir)/*.c))
#指定.o文件的存放目录
OBJ_DIR = ./obj
#目标文件
OBJ:= $(patsubst %.c,%.o,$(SRC))
#去.o文件地址只保留文件名
OBJ_WITHOUT_DIR = $(notdir $(OBJ))
#将生成的.o文件与指定目录相绑定
OBJ_WITH_DIR = $(addprefix $(OBJ_DIR)/,$(OBJ_WITHOUT_DIR))
#以下不需要变动
all: clean $(OBJ_WITHOUT_DIR) $(OUTPUT)
$(OUTPUT):$(OBJ_WITH_DIR)
$(CC) -Wall -o $(OUTPUT_DIR)/$@ $^ $(LIB_DIR) $(LIB)
%.o:%.c
$(CC) $(INCLUDE_DIR) $(LIB_DIR) $(LIB) -c $< -o $(OBJ_DIR)/$@
clean:
rm -rf $(OUTPUT_DIR)/DataAcquistionSystem $(OBJ_DIR)/*.o
.PHONY: all clean