Makefile项目实例

#
# v2x
#
ROOT_DIR = $(shell pwd)
TARGET_BIN_DIR = /tftpboot

#
# generate source file list
#
#检索src目录下 9级目录所有的 .c
#列出src目录下的所有目录结构,输出结果如下:
#src
#src/asn1_LTEV
#src/asn1_user
#src/cellular_modem
#src/commGpsCalc
#src/connectNet
#src/EventHMI
#src/func
#src/gnss
#src/includefile
#src/protobuf
#src/runlog
#src/tbox
#src/tools
#src/Utils
#src/v2x
#src/v2xproxy
#src/vehicleclac
#src/VehicleStatus
#src/xmlconfig

SRC_DIR += $(shell find src -maxdepth 9 -type d)

#将上面目录中的所有.c文件赋值给SOURCES带目录
SRCC += $(foreach dirs, $(SRC_DIR),$(wildcard $(dirs)/*.c))
#获得src下的源文件集合
C_SRCS   = $(filter %.c, $(SRCC))
#通过变量替换,获得将要生成的.o文件集合
C_OBJS   = $(C_SRCS:%.c=release/%.o)


#
# compile config
#
#
#编译参数
C_FLAGS = -Wall -Wno-unused -fvisibility=hidden
#需要的库
LD_FLAGS =
LD_FLAGS += -lm
LD_FLAGS += -pthread -lrt -lztesdkversion -lv2x_radio -lcv2x-kinematics
LD_FLAGS += -lmxml
LD_FLAGS += -lmosquitto
#库文件路径
LIBS_DIR  = -L.
LIBS_DIR  += -L$(ROOT_DIR)/lib


#使用自动寻找头文件路径,头文件目录集合
INC_DIR_NAME = $(shell find $(ROOT_DIR)/src -maxdepth 9 -type d)
#头文件目录加-I参数集合
INC_DIR += $(foreach incdirs, $(INC_DIR_NAME),-I$(incdirs))
#头文件下的所有.h文件集合
INC_FILE = $(foreach incdirs, $(INC_DIR_NAME),$(wildcard $(incdirs)/*.h))



#TOOL_PREFIX = aarch64-poky-linux-
#编译C文件时加头文件参数
C_COMPILE = $(CC) $(C_FLAGS) $(INC_DIR)
#CPP_COMPILE = $(TOOL_PREFIX)g++ $(C_FLAGS) $(INC_DIR)链接指令
LINK     = $(CC)
#
C_STRIP     = $(STRIP)
#gdb参数
DBGCFLAGS = -g
#优化参数
RELCFLAGS = -O0 -Wall
#库和库路径
RELLDFLAGS = $(LIBS_DIR) $(LD_FLAGS)
         
#
# target
#
TARGET = app_v2x
RELTARGET = release/$(TARGET)

$(RELTARGET): $(C_OBJS)
    $(LINK) -o $@ $^ $(RELLDFLAGS)
#    $(C_STRIP) $@ #暂时注释掉,防止PC编译时,自运衄1�7
#    $(C_STRIP) -x -R .note -R .comment $@
#    #cp $@ $(TARGET_BIN_DIR)
#   C_OBJS集合中的每一个元素也就是每一个路径,去掉release后将.o替换为.c 即 release/src/app_v2x.o会模式匹配为src/app_v2x.o,然后替换为src/app_v2x.c
$(C_OBJS):release/%.o:%.c $(INC_FILE_NAME)
    @mkdir -p release
    @mkdir -p $(dir $@)
    $(C_COMPILE) $(RELCFLAGS) $(DBGCFLAGS) -c -o $@ $<

.PHONY: all clean

all: clean $(RELTARGET)

clean:
    -@rm -rf release


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值