• makefile+make


     1.make
     -gcc-编译器
     -make-Linux自带的构建器
       --构建的规则在makefile中
    2.makefile文件的命名
     -makefile
     -Makefile
    3.makefile中的规则
     gcc a.c b.c c. -p app
     -三部分:目标,依赖,命令
      目标:依赖
      (tab缩进)命令
       app:a.c b.c c.c
           gcc a.c b.c c.c -o app
       -makefile中由一条或者多条规则组成
       -*-make
       make命令会调用makefile中的命令
    4.makefile的编写
     -第一个版本
     缺点:效率低,需改一个文件,所有文件会被全部重新编译
     
     -第二个版本
      -工作原理
       -检测依赖是否存在:
        向下搜索下边的规则,如果有规则是用来生成查找的依赖的,执行规则中的命令
       -依赖存在,判断是否需要更新
        -原则:目标时间>依赖的时间
       -缺点:冗余
     -第三个版本:
      -自定义变量:
                   obj=a.o b.o c.o
                   obj=10
      -变量的取值
                   aa=$(obj)
       -makefile自带的变量:大写
        -CPPFLAGS
        -CC
       -自动变量:
        $@:表示规则中的目标
        $<:规则中的第一个依赖
        $^:规则中所有的依赖
        只能在规则中的命令中使用    
     
        obj=main.o add.o sub.o mul.o
        target=app
        $(target):$(obj)
          gcc $(obj) -o $(target)
        %.o:%.c
          gcc -c $< -o $@
      
    模式匹配
       %.o:%.c
     
    第四个版本
      makefile所有的函数都有返回值
      -查找指定目录下指定类型的文件
       src=$(wildcard ./*.c)
       返回值为当前目录下所有.c 源文件列表。
      -匹配替换
       obj=$(patsubst %.c,%.o,$(src))
     
    清除工作目录过程文件:
    规则除了完成源代码编译之外,也可以完成其它任务。例如:前边提到的为了实现
    清除当前目录中编译过程中产生的临时文件(edit 和哪些.o 文件)的规则:
    clean : 
    rm edit $(objects) 
  • 相关阅读:
    JS-OO-数据属性,访问器属性
    下载php扩展笔记
    php字符串笔记
    include、require、include_once和require_once理解
    http协议笔记
    Git中三种文件状态及其转换
    git add 命令
    / 直接用就可以了 想用,需要用\来转义
    $_POST 变量以及$GLOBALS['HTTP_RAW_POST_DATA']
    Python multiprocessing
  • 原文地址:https://www.cnblogs.com/MAPO/p/8462235.html
Copyright © 2020-2023  润新知