• 精简的makefile示例分析


    1 make

      make 是Linux自带的构建器,构建的规则在makefile文件中

    2 makefile文件名

      makefile 或 Makefile

    3 makefile中的规则

    • makefile的规则有三部分:目标,依赖,命令;
    • makefile有一条或多条规则组成;
    • 第一个目标是makefile的终极目标;
    • 用 # 添加注释。

    -------------------------------------------------------------------------

      目标:依赖
      (tab缩进) 命令

         gcc a.c b.c c.c -o app 改为makefile文件如下:

          

     4 makefile的编写

        工作原理:依赖不存在,就向下搜索下面的规则,如果找到用来生成查找依赖的规则,就执行规则中的命令;依赖存在,就判断是否需要更新

        第一版:改为多条规则如下,可以实现只有修改的文件才重新编译。

                

         第二版:使用自定义变量,减少冗余

                

        a.自定义变量:

          obj=a.o b.o c.o

          obj=10

         b.变量的取值:

          aa=$(obj)

        c. makefile自带的变量:大写

          CPPFLAGS

          CC

        d. 自动变量:只能在命令中使用

          $@  :  规则中的目标

          $<  :  规则中的第一个依赖

          $^  :  规则中的所有依赖

        e. 模式匹配:

          %.o:%.c

      第三版:全部改为自定变量。

              

      第四版:使用函数,实现makefile文件在不同的项目中通用。makefile所有的函数都有返回值

         

         a.  查找指定目录下指定类型的文件

            src=$(wildcard ./*.c)

         b. 匹配替换

            obj=$(patsubst %.c, %.o, $(src))

      第五版:添加清理项目功能。只需要添加一个新的规则:clean即可,注意:clean应该名声为伪目标。

         

        a. 使用.PHONY声明伪目标,如果clean不声明为伪目标,并且目录下有一个文件名为clean的文件,那么make clean就永远不会执行。

        b. rm命令前面添加一个 - 号,表示命令执行失败时,继续向下执行。

    src=$(wildcard ./*.c)
    obj=$(patsubst %.c, %.o, $(src))
    target=app
    
    $(target):$(obj)
            gcc $^ -o $@
    %.o:%.c
            gcc -c $< -o $@
    
    .PHONY:clean
    clean:
            -rm $(obj) $(target) -f
  • 相关阅读:
    「Python」pandas入门教程
    「Python」字符串操作内置函数
    「Python」10个python项目
    python-基础入门-序
    提取网站图片
    c#图片添加水印
    js获取url传递的参数
    构建之法阅读笔记01
    学习进度条<第一周>
    30道四则运算<1>
  • 原文地址:https://www.cnblogs.com/ziwuxian/p/12588040.html
Copyright © 2020-2023  润新知