make/makefile学习

1、makefile函数

1.1、字符串替换函数:subst

函数原型: $(subst <from>,<to>,<text>)
名称: 字符串替换函数——subst。
功能: 把字串<text>中的<from>字符串替换成<to>
返回: 函数返回被替换过后的字符串。

1.2、模式字符串替换函数:patsubst

函数原型: $(patsubst <pattern>,<replacement>,<text>)
功能: 查找<text>中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pattern>,如果匹配的话,则以<replacement>替换。这里,<pattern>可以包括通配符“%”, 表示任意长度的字串。 如果<replacement>中也包含“%”, 那么, <replacement>中的这个“%”将是<pattern>中的那个“%”所代表的字串。(可以用“\”来转义, 以“%”来表示真实含义的“%”字符)
返回: 函数返回被替换过后的字符串。

1.3、去空格函数:strip

函数原型:$(strip <string>)
名称:去空格函数——strip。
功能:去掉<string>字串中开头和结尾的空字符。注意这里只去掉开头和结尾。
返回:返回被去掉空格的字符串值。

1.4、查找字符串函数:findstring

2、=、:=、?=区别

通过查询资料及试验,个人感觉这3中赋值语法的区别主要是:

  • = 赋值,无论变量在makefile中被赋值多少次,最后一次赋值将被应用于整个makefile.
  • :=赋值,变量在makefile中的赋值立即生效,如果变量被更改,更改也立即生效。
  • ?=赋值,变量没有被定义时,定义变量并赋值。如果变量已经存在,则忽略赋值操作。

试验代码:


a = hello # not the last, skip
b = $(a) world
a = okay # not the last, skip
a = OKAY # the last change is applied.

c := hello # the immediate value is applied
d := $(c) world
c := okay

e ?= hello # the first change is applied
e ?= HELLO # already exist, skip
f ?= $(e) world
e ?= world

all:
    @echo "=        "$(b)
    @echo ":=       "$(d)
    @echo "?=       "$(f)                  

输出:
在这里插入图片描述

相关推荐

  1. 学习 学习

    2024-04-09 12:04:05       66 阅读
  2. 学期学习计划

    2024-04-09 12:04:05       45 阅读
  3. 学习笔记:机器学习

    2024-04-09 12:04:05       79 阅读
  4. C++学习-List学习

    2024-04-09 12:04:05       51 阅读
  5. opencv学习 机器学习

    2024-04-09 12:04:05       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 12:04:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 12:04:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 12:04:05       87 阅读
  4. Python语言-面向对象

    2024-04-09 12:04:05       96 阅读

热门阅读

  1. 【算法基础】第一章:基础算法

    2024-04-09 12:04:05       27 阅读
  2. go语言学习--2.函数

    2024-04-09 12:04:05       36 阅读
  3. mysql基础命令和json类型

    2024-04-09 12:04:05       33 阅读
  4. reids自定义RedisTemplate以及乱码问题解决

    2024-04-09 12:04:05       31 阅读
  5. Gitea:轻量级自托管Git服务的简介

    2024-04-09 12:04:05       37 阅读
  6. ubuntu23 安装nodejs

    2024-04-09 12:04:05       33 阅读
  7. VSCode配置json文件 C语言篇

    2024-04-09 12:04:05       38 阅读
  8. linux 配置pg官方镜像

    2024-04-09 12:04:05       34 阅读
  9. HTML5标签(网页编程)

    2024-04-09 12:04:05       34 阅读