美文网首页
谁会拒绝一个makefile版本的斐波那契函数呢?

谁会拒绝一个makefile版本的斐波那契函数呢?

作者: Mum_Chen | 来源:发表于2019-03-19 18:03 被阅读0次

    起因: fibonacci的呼唤

    这几天由于工作原因, 需要写一些较为复(mo)杂(xing)的Makefile脚本, 所以我花了一段时间好好的学习了一下make教程.
    当阅读到高级功能的时候我的san值在狂降.在习得了make的递归手法之后, 我仿佛听到了fibonacci在呼唤我!!!

    撸起袖子干活

    Makefile

    # Makefile
    fib ?= 1
    
    ifeq ($(origin _A), undefined)
      _A = 0
      _B = 1
      _C = 1
    else
      private _C := $(shell echo $(_A) + $(_B) | bc)
      _A := $(_B)
      _B := $(_C)
    endif
    export _A  _B fib
    
    _fib:
    ifeq ($(fib), $(MAKELEVEL))
        @$(MAKE) -C . _done --no-print-directory
    else
        @echo lv=$(MAKELEVEL), A=$(_A) B=$(_B)
        @$(MAKE) -C . _fib --no-print-directory
    endif
    
    _done:
        @echo result=$(_A)
    

    运行这段程序

    make fib=4
    
    # result
    lv=0, A=0 B=1
    lv=1, A=1 B=1
    lv=2, A=1 B=2
    lv=3, A=2 B=3
    result=5
    

    课堂笔记

    1. 谁会拒绝一个makefile版本的斐波那契函数呢?
    2. 用的是bc实现的加减法, 在执行make fib=327之后, 程序会出现错误.
    3. 在编写一些魔性的makefile时, eval, value, call我认为更实用. 推荐去官方看教程.

    参考资料

    相关文章

      网友评论

          本文标题:谁会拒绝一个makefile版本的斐波那契函数呢?

          本文链接:https://www.haomeiwen.com/subject/rrynmqtx.html