Makefile示例
将编译指令封装起来,然后调用make,解读Makefile,简化开发。
一个简单的示例:
CLDFLAGS += -lcrypto -llua -lpthread
DEPT := ipq40xx
MODE :=
VER = 1.3.6
TOPDIR = $(PWD)
SOURCE_DIR = $(TOPDIR)/src
BUILD_DIR = $(TOPDIR)/build_dir
OUTPUT_FOLDER = output
OUTPUT_DIR = $(BUILD_DIR)/$(OUTPUT_FOLDER)
CCFLAGS += -I$(OUTPUT_DIR) -O2 -Wall -Werror
CLDFLAGS += -L$(OUTPUT_DIR)
DEPT ?= linux
#SDK_TAR_DIR := /home/ubuntu/demo-SDK/sdk-tar/$(DEPT)
SDK_TAR_DIR := $(PWD)
ifdef TOOL_DIR
TARGET_CROSS := $(TOOL_DIR)/$(TOOL_PREFIX)
TARGET_CONFIGURE_OPTS = \
CC=$(TARGET_CROSS)gcc \
AR=$(TARGET_CROSS)ar \
LD=$(TARGET_CROSS)ld \
STRIP=$(TARGET_CROSS)strip
endif
all:
make clean
make env
#$(MAKE) -C $(BUILD_DIR) CC="$(CC)" AR="$(AR)" LD="$(LD)" MODE="$(MODE)" CLDFLAGS="$(CLDFLAGS)" CCFLAGS="$(CCFLAGS)"
$(MAKE) -C $(BUILD_DIR) $(TARGET_CONFIGURE_OPTS) MODE="$(MODE)" CLDFLAGS="$(CLDFLAGS)" CCFLAGS="$(CCFLAGS)"
make tar
make save
env:
mkdir -p $(OUTPUT_DIR)
cp -r $(SOURCE_DIR)/* $(BUILD_DIR)/
tar:
cd $(BUILD_DIR) && tar cvf demo-sdk-$(DEPT)-$(VER)-beta-`date +%Y%m%d_%H%M%S`.tar \
$(OUTPUT_FOLDER) demo-kit demo-main
save:
mkdir -p $(SDK_TAR_DIR)
cp -r $(BUILD_DIR)/*.tar $(SDK_TAR_DIR)
clean:
rm -rf $(BUILD_DIR)/*
.PHONY: all env tar clean
或者另外一种简单的形式:
SOFTVER?=1.0.0
define Package/base-files/install
define Package/base-files/install
echo soft_ver:$(SOFTVER) Build `date +%Y%m%d` Rel. `date +%H%M%S`> ./files/etc/softversion
$(CP) ./files/* $(1)/
输出的结果:
cat etc/softversion
soft_ver:V1.0.0 Build 20230925 Rel. 172745
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix