makefile的常用技巧

  1. echo打印
ifeq (,$(findstring s,$(MAKEFLAGS)))
XECHO = echo
else
XECHO = :
endif

......

@$(XECHO) Generating $@

执行make显示打印,make -s不显示打印。

  1. 限制文件大小
ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
BOARD_SIZE_CHECK = \
    @actual=`wc -c $@ | awk '{print $$1}'`; \
    limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
    if test $$actual -gt $$limit; then \
        echo "$@ exceeds file size limit:" >&2 ; \
        echo "  limit:  $$limit bytes" >&2 ; \
        echo "  actual: $$actual bytes" >&2 ; \
        echo "  excess: $$((actual - limit)) bytes" >&2; \
        exit 1; \
    fi
else
BOARD_SIZE_CHECK =
endif

$(obj)u-boot.bin:   $(obj)u-boot
        $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
        $(BOARD_SIZE_CHECK)

定义CONFIG_BOARD_SIZE_LIMIT可以自动检测目标文件的大小是否超出,防止镜像超出分区最大容量。

  1. 定义当前时间
@LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > timestamp_autogenerated.h
@LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> timestamp_autogenerated.h

timestamp_autogenerated.h写入#define U_BOOT_DATE "Jan 29 2019"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,484评论 0 9
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,883评论 0 10
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,814评论 0 11
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,077评论 2 89
  • 第一章 1.Linux是一套免费使用和自由传播的类UNIX操作系统,它可以基于Intel x86系列处理器以及Cy...
    yansicing阅读 5,491评论 0 9