46 lines
1.6 KiB
Makefile
46 lines
1.6 KiB
Makefile
#指定项目.c存在的文件夹
|
||
SRC_DIR= ./src/drv/software ./src/drv/hardware/board ./src/drv/hardware/peripheral ./src/tool ./src/task ./src/app ./src/lib
|
||
#设置依赖文件夹搜索顺序,“:”为分隔符
|
||
vpath %.c ./src/drv/software: ./src/drv/hardware/board: ./src/drv/hardware/peripheral: ./src/tool: ./src/task: ./src/app: ./src/lib
|
||
#输出文件名
|
||
OUTPUT:= DataAcquistionSystem
|
||
#输出目录
|
||
OUTPUT_DIR= ./exe
|
||
#使用标准编译,-g:表示可以使用gdb调试,-Wall:所有错误和警告在编译的时候都打出来,-O2:-代码优化
|
||
#交叉编译
|
||
CC:= aarch64-linux-gnu-gcc
|
||
CXX:= aarch64-linux-gnu-g++
|
||
|
||
#包含路径
|
||
INCLUDE_DIR+= -I ./src/drv/software
|
||
INCLUDE_DIR+= -I ./src/drv/hardware/board
|
||
INCLUDE_DIR+= -I ./src/drv/hardware/peripheral
|
||
INCLUDE_DIR+= -I ./src/app
|
||
INCLUDE_DIR+= -I ./src/lib
|
||
INCLUDE_DIR+= -I ./src/task
|
||
INCLUDE_DIR+= -I ./src/tool
|
||
#编译链库
|
||
LIB:= -lrt -lpthread -lm -ljson-c -lcurl -lnats -lmodbus -lmysqlclient
|
||
#遍历所有子目录中的.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
|