• makefile


    参考文章:https://blog.csdn.net/qq_22182835/article/details/89467386

    参考视频:https://www.bilibili.com/video/BV1dt411f7TZ?p=67

    Makefile基本原则中的三要素
        目标:myCal
        依赖:add.c sub.c mul.c main.c
        命令:gcc add.c sub.c mul.c main.c -o myCal
        
        规则示例:(版本1)
        1.myCal:add.c sub.c mul.c main.c
        2.    gcc add.c sub.c mul.c main.c -o myCal
        (第二行为一个tab缩进)
        
        保存之后推出vi编辑,执行make命令,运行makefile文件生成终极目标
        
        直接从.c文件转换成可执行文件,如果其中一个.c文件需要修改,需要把所有的.c文件重新编译一遍,耗时太长
        考虑先将.c文件转换成.o文件,修改其中的对应.o文件即可。
        
        优化后如下:(版本2)
        1.myCal:add.o sub.o mul.o main.o
        2.    gcc add.o sub.o mul.o main.o -o myCal
        3.
        4.add.o:add.c
        5.    gcc -c add.c
        6.
        7.sub.o:sub.c
        8.    gcc -c sub.c
        ...
        
        规则模式:
        %:自动匹配所有依赖    
        makefile中的自动变量:
            $<:规则中的第一个依赖
            $@:规则中的目标
            $^:规则中的所有依赖
        自动变量只能在规则的命令中使用
        
        使用变量之后优化如下:(版本3)
        1.obj=add.o sub.o mul.o main.o【自定义变量--小写】
        2.target=myCal
        3.$(target):$(obj)
        4.    gcc $(obj) -o $(target)
        5.
        6.%.o:%.c
        7.    gcc -c $< -o $@【自动变量】
        
        makefile中有一些自己维护的变量
        CC
        CFLAGS
        
        makefile中函数的使用:(版本4)
        1.target=app.out
        2.src=$(wildcard ./*.c)
        3.obj=$(patsubst ./%.c, ./%.o, $(src))
        4.
        5.$(target):$(obj)
        6.    gcc $(obj) -o $(target)
        7.    
        8.%.o:%.c
        9.    gcc -c $< -o $@
        10.
        11..PHONY:clean【声明伪目标,使其不受更新时间影响,被touch之后仍然执行】
        12.clean:
        13.    rm $(obj) $(target) -f【-f强制执行,不会返回错误信息】
        
        在当前目录下可以执行 make clean来删除所有的.o文件和目标文件
        小细节:在makefile的命令前面加上-,当命令执行失败时可以忽略,继续向下执行
  • 相关阅读:
    webpack安装填坑('webpack' 不是内部或外部命令,也不是可运行的程序或批处理文件)
    JS中let和var的区别(附加const声明特点)
    浅谈 var bool= false 和 var bool= new Boolean(false)的区别
    "if (!(""a"" in window)) { var a = 1; } alert(a); 为什么结果是undefined"
    浅谈display: none、visibility: hidden、overflow: hidden、opacity: 0
    10Git服务器搭建
    09Git GitHub
    08Git标签
    07Git查看提交历史
    自举驱动电路原理
  • 原文地址:https://www.cnblogs.com/zheaven/p/14102453.html
Copyright © 2020-2023  润新知