makefile读取文件内容到变量

在编程中,Makefile是一种常用的构建工具,用于自动化编译和链接程序,它可以根据文件的依赖关系自动执行相应的操作,从而简化了编译过程,在Makefile中,我们可以使用一些内置函数来读取文件的内容,以便根据文件内容执行相应的操作,本文将介绍如何在Makefile中读取文件内容的方法。

1、使用$(shell)内建函数

makefile读取文件内容到变量

$(shell)内建函数可以执行一个shell命令,并将命令的输出作为变量的值,我们可以使用这个函数来读取文件的内容,假设我们有一个名为file.txt的文件,我们想要读取它的内容并将其存储在一个名为content的变量中,可以使用以下Makefile规则:

content = $(shell cat file.txt)

这里,$(shell cat file.txt)会执行cat命令,读取file.txt文件的内容,并将内容存储在content变量中。

2、使用$(wildcard)内建函数

$(wildcard)内建函数可以匹配多个符合通配符规则的文件名,并返回这些文件名组成的列表,我们可以使用这个函数来读取多个文件的内容,假设我们有一个名为file1.txt、file2.txt和file3.txt的文件,我们想要读取它们的内容并将其存储在一个名为contents的变量中,可以使用以下Makefile规则:

contents = $(wildcard file*.txt)

这里,$(wildcard file*.txt)会匹配所有以file开头、以.txt结尾的文件名,并将这些文件名组成的列表存储在contents变量中,我们可以使用$(foreach)内建函数遍历这个列表,并读取每个文件的内容:

makefile读取文件内容到变量

contents = $(wildcard file*.txt)
contents_list = $(foreach f,$(contents),$(shell cat $(f)))

这里,$(foreach f,$(contents),$(shell cat $(f)))会遍历contents列表中的每个文件名f,并执行cat命令读取f对应的文件内容,将这些内容存储在一个名为contents_list的变量中。

3、使用$(filter-out)内建函数

$(filter-out)内建函数可以根据指定的模式过滤掉不符合模式的文件名,我们可以使用这个函数来读取符合条件的文件内容,假设我们有一个名为file1.txt、file2.txt和file3.txt的文件,我们想要只读取以file2开头的文件的内容,可以使用以下Makefile规则:

contents = $(filter-out file1.txt %, $(wildcard *.txt))

这里,$(filter-out file1.txt %, $(wildcard *.txt))会过滤掉以file1开头的文件名,并返回剩余文件名组成的列表,我们可以使用$(foreach)内建函数遍历这个列表,并读取每个文件的内容:

contents = $(filter-out file1.txt %, $(wildcard *.txt))
contents_list = $(foreach f,$(contents),$(shell cat $(f)))

这里,$(foreach f,$(contents),$(shell cat $(f)))会遍历contents列表中的每个文件名f,并执行cat命令读取f对应的文件内容,将这些内容存储在一个名为contents_list的变量中。

makefile读取文件内容到变量

4、使用$(if)内建函数

$(if)内建函数可以根据条件表达式的值来决定是否执行某个操作,我们可以使用这个函数来根据文件是否存在来决定是否读取文件内容,假设我们有一个名为file.txt的文件,我们想要在文件存在时读取它的内容,可以使用以下Makefile规则:

ifeq ($(wildcard file.txt),)
file.txt不存在时的操作
else
file.txt存在时的操作,例如读取内容并存储在content变量中:
content = $(shell cat file.txt)
endif

这里,$(wildcard file.txt)会匹配file.txt文件名,如果匹配成功(即文件存在),则返回该文件名;否则返回空字符串,ifeq会根据这两个值是否相等来决定是否执行相应的操作,当文件不存在时,我们可以执行一些其他操作;当文件存在时,我们可以执行读取文件内容的操作。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/334593.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-02-27 09:18
Next 2024-02-27 09:24

相关推荐

  • shell知识点都有什么呢「shell知识点都有什么呢」

    Shell是一种命令行解释器,它为用户提供了一个与操作系统进行交互的接口,通过Shell,用户可以执行各种命令、管理文件和运行程序等,下面是一些常见的Shell知识点:1. 基本语法:Shell使用特定的语法来解析用户输入的命令,命令名后面通常跟着参数,参数之间用空格分隔,命令的结束符是换行符(Enter键)。2. 变量:Shell支……

    2023-11-14
    0128
  • 如何分析Linux日志?常用命令有哪些?

    Linux日志分析是系统管理员和安全专家日常工作的重要组成部分,通过合理使用命令行工具,可以高效地管理和分析各种服务、应用程序以及系统产生的日志文件,以下是一些常用的Linux日志分析命令及其用法:一、基础命令1、cat功能:直接输出日志文件内容,示例:cat /var/log/syslog2、more功能:分……

    2024-11-25
    05
  • linux怎么写makefile

    在Linux中编写Makefile,首先需要创建一个名为Makefile的文件,然后按照规则和依赖关系编写相应的指令。

    2024-01-24
    0186
  • linux service 命令

    Linux基础命令service的用法在Linux系统中,服务(service)是一组相互关联的进程,它们共同完成一个特定的任务,服务通常用于管理系统、应用程序或其他组件,在Linux系统中,有许多内置的服务,如Apache HTTP服务器、MySQL数据库等,用户还可以根据需要创建自定义服务,本文将介绍Linux中service命令……

    2023-12-19
    0134
  • shell if多个条件判断怎么写

    在Shell脚本编程中,if语句是进行条件判断的常用结构,它允许你基于某些条件执行特定的代码块,当需要同时判断多个条件时,可以使用不同的逻辑运算符将这些条件组合起来,以下是如何在Shell脚本中使用if语句进行多个条件判断的详细说明。使用逻辑运算符在Shell脚本中,有三种基本的逻辑运算符可以用于组合多个条件:1、&&……

    2024-02-07
    0183
  • linux怎么运行makefile文件

    然后再运行make test,就可以生成一个名为test的可执行文件。

    2023-12-24
    0226

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入