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

浙公网安备 33010602011771号