makefile 通用模板
# # Makefile # # ⭐全速编译命令: make clean && make -j$(nproc) # := 就地解析赋值 = 最后一次赋值 ?= 未赋值时赋值 += 接续赋值 # mount -t nfs -o nolock,vers=3 192.168.5.12:/home/book/nfs_rootfs /mnt && ps -ef | grep jc | grep -v grep | awk '{print $1}' | xargs kill # # mount -t nfs -o nolock,vers=3 192.168.5.12:/home/book/nfs_rootfs /mnt # ps -ef | grep jc | grep -v grep | awk '{print $1}' | xargs kill # cp /mnt/_01_meter ./ && ./_01_meter # cd /root && cp /mnt/jclvgldemo ./ && ./jclvgldemo # cd /root && cp /mnt/jclvgldemo ./ && gdbserver localhost:9001 ./jclvgldemo # nohup ./jclvgldemo >/dev/null & ####################################################################### ####################################################################### ####################### 编译 ########################################## CC := aarch64-linux-gnu-gcc # cc := aarch64-linux-gnu-gcc # CC := gcc PRO_DIR ?= ${shell pwd} WARNINGS = -Wall -Wextra \ -Wshadow -Wundef -Wmaybe-uninitialized -Wmissing-prototypes -Wpointer-arith -Wuninitialized \ -Wunreachable-code -Wreturn-type -Wmultichar -Wdouble-promotion -Wclobbered -Wdeprecated \ -Wempty-body -Wtype-limits -Wsizeof-pointer-memaccess -g # CFLAGS用于编译,指定头文件等信息,源文件等信息 # LDFLAGS 用于链接,指定动态库目录,动态库名称等等 CFLAGS ?= -O2 -g0 $(WARNINGS) -I. -I./include CFLAGS += -I/opt/EmbedSky/TQT507/CoreA/longan//platform/framework/auto/sdk_lib/include # 使用gcc编译c++ CFLAGS += -lstdc++ CFLAGS += -I./cxx/include LDFLAGS += -L./cxx/lib -ldface -lMNN_CL -lMNN # LDFLAGS += -L/opt/EmbedSky/TQT507/CoreA/longan/out/t507/evb/longan/buildroot/target/usr/lib -L./lib # LDFLAGS += -lm -lz -lpthread -fstack-usage -lfreetype -lpng -lbz2 -lavformat -lavcodec -lavutil -lswscale -lswresample # LDFLAGS += -L/platform/framework/auto/sdk_lib/cedarx/lib -lcdx_ion # LDFLAGS += -L/platform/framework/auto/sdk_lib/sdk_memory -lsdk_memory ####################################################################### ####################################################################### ####################### 输出 ########################################## BIN = testdface_licence_localinfo OUTPUT = /home/book/nfs_rootfs OUTPUT_BOARD = /opt/EmbedSky/TQT507/CoreA/longan/out/t507/evb/longan/buildroot/target/root ####################################################################### ####################################################################### ####################### 源文件 ######################################### #Collect the files to compile # MAINSRC = ./main.c MAINSRC += ./example/cxx/licence_demo/licence_localinfo.cpp ## include $(PRO_DIR)/my_lib/my.mk ## 包含某个目录 ## # 根据实际需要添加指定目录下的某个文件 ## CSRCS += $(PRO_DIR)/pro_meter/meter_init.c ## CSRCS += $(PRO_DIR)/pro_meter/app/lvgl_include.c ## CSRCS += $(PRO_DIR)/pro_meter/app/lvgl_handle_show.c ## # 根据需要添加某目录下全部*.c文件 ## CSRCS += $(shell find -L $(PRO_DIR)/pro_meter/driver/ -name "*.c") ## CSRCS += $(shell find -L $(PRO_DIR)/pro_meter/handle/ -name "*.c") # CSRCS +=$(LVGL_DIR)/mouse_cursor_icon.c # $(info __debuginfo__ $(CSRCS)) ## 打印 OBJEXT ?= .o AOBJS = $(ASRCS:.S=$(OBJEXT)) COBJS = $(CSRCS:.c=$(OBJEXT)) MAINOBJ = $(MAINSRC:.c=$(OBJEXT)) SRCS = $(ASRCS) $(CSRCS) $(MAINSRC) OBJS = $(AOBJS) $(COBJS) $(MAINOBJ) ####################################################################### ####################################################################### ####################### 编译链接 ###################################### # demo 批量编译 make -c 跳转到指定目录下执行makefile文件 -f 指定make执行的文件(默认执行makefile) # SRC_DIR += lv_100ask_app/src/imx6ull_app/imx6ull_set_lcd_brightness\ # lv_100ask_app/src/imx6ull_app/imx6ull_set_time # all: default # $(foreach dir,$(SRC_DIR),make $(RUN_JOBS) -C $(dir);) # clean: # $(foreach dir,$(SRC_DIR),make -C $(dir) clean;) all: default %.o: %.c @$(CC) $(CFLAGS) -c $< -o $@ @echo "CC $<" default: $(OBJS) $(CC) -o $(BIN) $(OBJS) $(LDFLAGS) $(CFLAGS) @echo finished $(BIN) # mkdir -p $(LVGL_DIR)/obj $(LVGL_DIR)/bin/ # mkdir -p $(OUTPUT) $(LVGL_DIR)/obj $(LVGL_DIR)/bin/ # rm -rf $(OUTPUT)/$(BIN) cp $(BIN) $(OUTPUT) # cp $(BIN) $(OUTPUT_BOARD) clean: rm -f $(BIN) $(OBJS)
自己总结的makefile通用模板,
//