makefile文件编写

13 篇文章 0 订阅
常见的变量赋值
obj= xxxxxx   将右值赋给 左值
obj+=xxxxxx     将右值 以追加的方式  给左值
obj:=xxxxxxxxx    右值 覆盖左值
obj?=xxxxxxxxx   如果左边的值没有赋值 将右值赋给左值
makefile文件编写 
#-设置工程文件名,后续执行安装命令的时候用于指定安装文件夹名称-#
PROJECT 			?= lvgl-sdl

#-指定编译时线程数量,shell nproc是一条shell指令,获取当前系统的CPU核数-#
MAKEFLAGS 			:= -j $(shell nproc)

#-源文件扩展名-#
SRC_EXT      		:= c cpp

#-目标文件扩展名-#
OBJ_EXT				:= o

#-将编译器设置成gcc-#
CC 					?= gcc

#-源文件路径-#
SRC_DIR				:= ./

#-目标文件路径-#
WORKING_DIR			:= ./build
BUILD_DIR			:= $(WORKING_DIR)/obj

#-执行文件路径-#
BIN_DIR				:= $(WORKING_DIR)/bin

#-ui文件路径-#
UI_DIR 				:= ui

#-O0表示将编译器的优化级别设置成0(即不进行优化),-g表示开启调试信息-#
CFLAGS 				:= -O0 -g $(WARNINGS)

#- -D 表示定义一个宏-#
DEFINES				:= -D SIMULATOR=1 -D LV_BUILD_TEST=0

#- -I 表示添加的头文件的路径,-I需要紧跟着路径,不能有空格-#
INC 				:= -I./ui/simulator/inc/ -I./ -I./lvgl/

#- 链接库-#
LDLIBS	 			:= -lSDL2 -lm

#- 生生成bin文件名-#
BIN 				:= $(BIN_DIR)/demo

COMPILE				= $(CC) $(CFLAGS) $(INC) $(DEFINES)

#-找到头文件,并不包含隐藏文件和隐藏目录-#
SRCS 				:= $(shell find $(SRC_DIR) -type f -name '*.c' -o -name '*.cpp' -not -path '*/\.*')

#在BUILD_DIR文件夹中创建目标文件,目标文件名和SECS中的以SRC_EXT为后缀的文件名一样,但是后缀改成了OBI_EXT
OBJECTS    			:= $(patsubst $(SRC_DIR)%,$(BUILD_DIR)/%,$(SRCS:.$(SRC_EXT)=.$(OBJ_EXT)))

all: default

#-@表示不在命令行中显示这条指令-#
#-`$(dir $@)`是一个Makefile内置的函数,用于获取目标文件的目录部分-#
#--c选项表示只编译不链接,-o选项指定输出文件名,"$@"表示输出文件名,"$<"表示第一个依赖文件(即源文件)-#
$(BUILD_DIR)/%.$(OBJ_EXT): $(SRC_DIR)/%.$(SRC_EXT)
	@echo 'Building project file: $<'
	@mkdir -p $(dir $@)
	@$(COMPILE) -c -o "$@" "$<"

default: $(OBJECTS)
	@mkdir -p $(BIN_DIR)
	$(CC) -o $(BIN) $(OBJECTS) $(LDFLAGS) ${LDLIBS}

clean:
	rm -rf $(WORKING_DIR)

install: ${BIN}
	install -d ${DESTDIR}/usr/lib/${PROJECT}/bin
	install $< ${DESTDIR}/usr/lib/${PROJECT}/bin/

参考:

makefile = := ?= 3种赋值语法之间的区别_零一哥的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值