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
posted @   付时凡  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示