美文网首页
makefile写法

makefile写法

作者: _codelover | 来源:发表于2018-05-10 17:39 被阅读0次

makefile写法

规则

三要素:

  • 目标
  • 依赖
  • 命令

语法:
目标:依赖条件
命令

例子:

app:main.c add.c sub.c mul.c
    gcc main.c add.c sub.c mul.c -o app

改进:

  • 只是编译修改的部分,是把编译和链接分开执行

      app:main.o add.o sub.o mul.o
          gcc main.o add.o sub.o mul.o -o app
    
      main.o:main.c
          gcc -c main.c
      add.o:add.c
          gcc -c add.c
      mul.o:mul.c
          gcc -c mul.c
      sub.o:sub.c
          gcc -c sub.c
    

工作原理:

  • 默认只生成第一条规则
  • 所以需要把最终的生成目标写在第一条
  • 更新源文件时,会比较目标和依赖的时间关系,如果依赖比目标还晚,就会重新执行命令,
  • 其中一个更新,会导致其他依赖此目标的规则进行执行,最终导致最终的目标被更新

变量:

  • $< : 规则中第一个依赖
  • $@ : 规则中的目标
  • $^ : 规则中所有的依赖
  • 以上三个只能在命令中写
  • % : 模式规则,会做替换,比如用main,add来替换
  • CC : 系统维护的变量 CC = cc = gcc
  • CPPFLAGS : 预编译(头文件展开,宏替换,去掉注释)的选项
  • CFLAG : 编译时的选项 -L -g
  • 全大写是内部维护变量
        app:main.o add.o sub.o mul.o
            gcc main.o add.o sub.o mul.o -o app
            等价于 gcc $^ -o $@
        obj=main.o add.o sub.o mul.o
        target=app
        CC = gcc
        $(target):$(obj)
            $(CC) $(obj) -o $(target)

        %.o:%.c
            $(CC) -c $< -o $@

函数:

  • 一定有返回值
    obj=main.o add.o sub.o mul.o
    target=app
    #获取所有.c文件的函数wildcard,用$获取返回值
    src=$(wildcard ./*.c)
    #把所有的.c替换成.o
    obj=$(patsubst ./%.c, ./%.o, $(src))
    CC = gcc
    $(target):$(obj)
        $(CC) $(obj) -o $(target)

    %.o:%.c
        $(CC) -c $< -o $@
    obj=main.o add.o sub.o mul.o
    target=app
    #获取所有.c文件的函数wildcard,用$获取返回值
    src=$(wildcard ./*.c)
    #把所有的.c替换成.o
    obj=$(patsubst ./%.c, ./%.o, $(src))
    CC = gcc
    $(target):$(obj)
        $(CC) $(obj) -o $(target)

    %.o:%.c
        $(CC) -c $< -o $@

    #伪目标,不会进行更新时间的比较,防止在文件夹下有clean文件,导致clean无法执行
    .PHONYLclaen
    clean:
        #命令前面加上-意思是命令执行错误也继续执行
        -mkdir /aa
        rm $(obj) $(target)

相关文章

  • [C] Makefile

    Makefile Blog [Makefile的简便写法] [Makefile]菜鸟教程 [gcc编译声明问题] ...

  • makefile写法

    makefile写法 规则 三要素: 目标 依赖 命令 语法:目标:依赖条件命令 例子: 改进: 只是编译修改的部...

  • makefile

    项目文件目录为: makefile通用写法:

  • Makefile引用与环境变量

    一、Makefile中的引用 一个makefile中引用另一个makefile,其写法与C语言include 类似...

  • Android下独立编译.ko文件

    在Android环境下独立编译.ko文件,这和在Linux下模块化编译驱动程序相同,Makefile文件写法如下:

  • Qt PRO 文件写法

    在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如...

  • 编写Makefile及简单分析

    makefile的好处:一次编写,终身受益 makefile的命名规则: makefile Makefile ma...

  • Makefile 工程管理

    Ⅰ Makefile的用途 Ⅱ Makefile的构成 Ⅲ Makefile构成-----规则 Ⅳ Makefil...

  • win_c/c++ mess01

    1. win makefile 1.1 win makefile,eg: 1.2 makefile explai...

  • 迅为IMX6ULL开发板Ubuntu下C编程入门(二)

    本文是介绍3.3 初识 Makefile+3.4Makefile语法 3.3初识Makefile 3.3.1什么是...

网友评论

      本文标题:makefile写法

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