• Makefile


    Makefile作用

    工程是由大量GCC文件构成,一个个执行过于麻烦,Makefile可以将工程文件有序执行

    赋值符 =

    name=a
    curname=$(name)
    name=aa
    
    • 1
    • 2
    • 3

    变量的真实值取决于它所引用的变量的最后一次有效值
    最后输出curname=aa

    赋值符 :=

    name=a
    curname:=$(name)
    name=aa
    
    • 1
    • 2
    • 3

    不会使用后面定义的变量,只能使用前面已经定义好的
    最后输出curname=a

    赋值符 ?=

    curname ?= z
    
    • 1

    curname没被赋值,就等于z

    变量追加 +=

    a=main,o
    a+=input.o
    
    • 1
    • 2

    a为main.o input,o

    %

    模式规则

    main.o: main.c 
    	gcc -c main.c  
    input.o: input.c  
    	gcc -c input.c  
    calcu.o: calcu.c  
    	gcc -c calcu.c
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    %.o:%.c
    
    • 1

    自动化变量

    最常用
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    main.o: main.c 
    	gcc -c main.c  
    input.o: input.c  
    	gcc -c input.c  
    calcu.o: calcu.c  
    	gcc -c calcu.c
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    %.o:%.c
    	gcc -c $<
    
    • 1
    • 2

    .PHONY :

    伪目标

    .PHONY : clean
    
    • 1

    条件判断

    ifeq、 ifneq

    ifeq 判断相等

    ifeq (<参数 1>, <参数 2>) ifeq ‘‘<参数 1 <参数
    ifeq ““<参数 1>””, ““<参数
    ifeq ““<参数 1>””, ‘‘<参数
    ifeq ‘‘<参数 1>’’, ““<参数
    
    • 1
    • 2
    • 3
    • 4

    ifneq 判断不等

    ifdef、ifndef

    ifdef <变量名 >
    
    • 1

    如果“变量名”的值非空,那么表示表达式为真,否则表达式为假。“变量名”同样可以是一个函数的返回值。
    ifndef 相反

    函数

    函数 subst

    $(subst <from>,<to>,<text>)
    
    • 1

    在text中,将 from 换成 to

    $(subst zzk,ZZK,my name is zzk)
    
    • 1

    my name is zzk中,zzk 换成 ZZK

    函数 patsubst

    $(patsubst <pattern>,<replacement>,<text>)
    
    • 1

    在text中,所有符合 pattern 的 换成 replacement
    与上头不一样的——完成模式字符串替换
    pattern replacement可以用**%**表示

    $(patsubst %.c,%.o,a.c b.c c.c)
    
    • 1

    dir

    提取目录

    $(dir <names……>)
    
    • 1
    $(dir </src/a.c>)
    
    • 1

    返回/src

    notdir

    提取文件名

    $(notdir <names……>)
    
    • 1
    $(notdir </src/a.c>)
    
    • 1

    返回a.c

  • 相关阅读:
    [附源码]java毕业设计智能视频推荐网站
    实习记录(一):MySQL时间偏差问题的发现与解决
    VScode配置文件launch.json 和 tasks.json配置项详细说明
    数组结构与算法
    笔记39:在Pycharm中为项目添加新解释器
    深度前端性能调优的实际案例-小白都看的懂
    亚信科技笔试题
    springBoot异步线程,父子线程数据传递的5种姿势
    git简介和指令
    canal-1.1.5实时同步MySQL数据到Elasticsearch
  • 原文地址:https://blog.csdn.net/ljh5930/article/details/127796249