首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Makefile中用其他文件内容替换字符串

在Makefile中,可以使用变量和替换函数来实现用其他文件内容替换字符串的操作。

首先,需要定义一个变量来存储其他文件的内容。可以使用shell命令将文件内容赋值给变量,如下所示:

代码语言:txt
复制
FILE_CONTENT := $(shell cat other_file.txt)

上述命令使用cat命令读取other_file.txt文件的内容,并将其赋值给变量FILE_CONTENT。

接下来,可以使用替换函数来替换Makefile中的字符串。替换函数的语法为$(subst from,to,text),其中from表示要被替换的字符串,to表示替换后的字符串,text表示要进行替换操作的文本。

假设要将Makefile中的"old_string"替换为其他文件的内容,可以使用如下命令:

代码语言:txt
复制
new_text := $(subst old_string,$(FILE_CONTENT),$(text))

上述命令将Makefile中的"old_string"替换为变量FILE_CONTENT的值,并将替换后的文本赋值给变量new_text。

完整的Makefile示例代码如下:

代码语言:txt
复制
FILE_CONTENT := $(shell cat other_file.txt)

text := "This is some old_string."

new_text := $(subst old_string,$(FILE_CONTENT),$(text))

all:
    @echo $(new_text)

在上述示例中,Makefile首先将other_file.txt文件的内容赋值给变量FILE_CONTENT。然后,将文本"This is some old_string."中的"old_string"替换为FILE_CONTENT的值,并将替换后的文本赋值给变量new_text。最后,在all目标中,使用echo命令输出new_text的值。

请注意,上述示例中的other_file.txt文件路径可以根据实际情况进行修改。另外,如果other_file.txt文件中包含特殊字符,可能需要进行适当的转义处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用sed和awk查找和替换字符串处理Makefile文件(一)

在《使用sed命令批量处理Makefile文件的脚本》文中使用sed命令对前文中的Makefile文件进行了替换、追加和删除操作,这篇文章通过使用sed和awk命令对该Makefile文件的某个字符串进行正则匹配查找以及替换...1 功能需求 由于之前在BZ自己CenOS7中的C/C++工程部分Makefile文件有问题(CC变量被赋值为CC := g++),所以想写个shell脚本批量把Makefile文件出错的部分全部替换成...在for ... in的Makefile文件遍历中,先利用了awk命令的正则匹配查找、替换操作,然后是sed命令执行正则匹配查找、替换操作。 程序难点应该在于对g++中的+号正则匹配。...awk的sub函数的正则替换时,需要对g++处理成g\+\+形式,而其它正常都写成g+\+的形式。...SEARCH_NAME="Makefile*" # The maximum depth of the dirs where files such as Makefile you're dealing with

23010

使用sed和awk查找和替换字符串处理Makefile文件(三)

在前文中演示了使用awk和sed命令正则查找和替换Makefile文件中的make clean操作规则:把-(RM) (ULT_BIN)和-(RM) (ULT_BIN)这两句写成一句-(RM) (ULT_BIN...) 1 具体功能需求 要实现的效果如果上图所示,左边表示之前的Makefile文件,右边是通过本次Shell脚本处理后的Makefile文件,红色部分就是需要点。...所以为了批量替换掉虚拟机中项目现有所有的Makefile文件,BZ选择用包含sed和awk命令的shell脚本来处理。...需求2: 每调用gen_excbin或者gen_libs包生成可执行文件或者库文件后(即 @和 @ 需求3: 替换掉原来的(bin).o为(CURDIR)/ 2 shell程序 下面的这份shell脚本比较简单...同前文的脚本框架一样,这里先使用for ... in的Makefile文件遍历中,然后利用了awk命令的正则匹配查找、替换操作,然后是sed命令执行正则匹配查找、替换以及追加操作。

25910
  • 使用sed和awk查找和替换字符串处理Makefile文件(二)

    在前文中演示了使用awk和sed命令正则查找和替换Makefile文件的匹配内容,这篇文章依然使用这个Makefile文件作为awk和sed命令正则匹配查找、替换和删除操作。...1 功能需求 由于之前在BZ自己CenOS7中的C/C++工程部分Makefile文件在make clean操作时的语句可以优化,也就是可以把-(RM) (ULT_BIN)和-(RM) (ULT_BIN...在for ... in的Makefile文件遍历中,先利用了awk命令的正则匹配查找、替换操作,然后是sed命令执行正则匹配查找、替换以及删除操作。...另外,脚本中sed命令通过-e参数先执行正则匹配和替换操作,然后执行正则匹配删除操作。...SEARCH_NAME="Makefile*" # The maximum depth of the dirs where files such as Makefile you're dealing with

    22110

    Makefile 入门教程

    Makefile 是一个非常强大的构建自动化工具,用于管理项目的编译、链接和其他构建任务。以下是一个详细的 Makefile 使用文档,包括基本概念、语法、示例和常见任务。 1....dependencies:生成目标所需的文件其他目标的列表。 command:生成目标的命令,必须以 Tab 键开头。 3....$(strip string):删除字符串开头和结尾的空白字符。 $(subst find,replace,text):替换文本中的字符串。...$(filter pattern, text):从文本中筛选出匹配指定模式的字符串。 $(patsubst pattern,replacement,text):用指定字符串替换文本中的模式。...$(notdir names):从文件路径中提取文件名。 这些函数可以在 Makefile 中用于各种目的,例如文件操作、文本处理和条件判断。

    41620

    Makefile 入门教程

    Makefile 是一个非常强大的构建自动化工具,用于管理项目的编译、链接和其他构建任务。以下是一个详细的 Makefile 使用文档,包括基本概念、语法、示例和常见任务。 1....•dependencies:生成目标所需的文件其他目标的列表。•command:生成目标的命令,必须以 Tab 键开头。 3....•(strip string):删除字符串开头和结尾的空白字符。•(subst find,replace,text):替换文本中的字符串。...•(filter pattern, text):从文本中筛选出匹配指定模式的字符串。•(patsubst pattern,replacement,text):用指定字符串替换文本中的模式。...•(notdir names):从文件路径中提取文件名。 这些函数可以在 Makefile 中用于各种目的,例如文件操作、文本处理和条件判断。

    25020

    Linux项目自动化构建清理工具-makeMakefile如何实现编译代码

    2、如何使用这两个工具: 2.1创建mekefile文件 我们首先需要创建一个makefile文件,注意文件名必须是makefile,只有首字母m可以是大小写,其他必须保持一致!...makefile文件内容如上所示。 2.2输入make指令 然后我们直接保存退出makefile文件,然后在命令行直接输入make,就可以直接将test.c源文件变成可执行程序!...认识一下时间:(ACM) stat关键字查询文件的时间 文件 = 内容 + 属性 这里一共有三个时间,具体文件的时间与modify(文件内容)一致。...这里的@对应的mybin可执行文件,^对应的目标文件,相当于一个简写 其中mybin也可以这样书写,相当于宏替换,就是以$加上()的形式进行替换 问题:我们这里为什么不把伪目标加到生成可执行文件上,而是加到...我们可以在命令行用 vs + 文件名就可以添加文件进入分屏编写代码;然后CTRL+W就是替换不同的文件编写! 这里是多文件编译的时候,makefile文件书写的方式,这里是在同一个目录下的情况。

    10310

    Makefile 的使用

    我们可以使用“-f”选项指定文件,不再使用名为“Makefile”的文件,比如: make -f Makefile.build 我们可以使用“-C”选项指定目录,切换到其他目录里去,比如: make -...变量的导出(export): 在编译程序时,我们会不断地使用“make -C dir”切换到其他目录,执行其他目录里的 Makefile。.... // 其他代码,比如 include 其他文件得到后面的 xxx 变量 First_target : $(xxx) $(yyy) // 在文件的后面再来完善 command F....一个 Makefile 文件可以包含规则以外的其他文本,但一个简单的 Makefile 文件仅仅需要包含规则。虽然真正的规则比这里展示的例子复杂,但格式是完全一样的。...内核的 Makefile 中用到大量的函数,现在介绍一些常用的。 3.4.1 字符串替换和分析函数 (1)$(subst from,to,text) 在文本text中使用to替换每一处from。

    4.3K42

    Makefile 的使用(在 Linux 中使用 make 命令来编译程序)

    我们可以使用“-f”选项指定文件,不再使用名为“Makefile”的文件,比如: make -f Makefile.build 我们可以使用“-C”选项指定目录,切换到其他目录里去,比如: make -...变量的导出(export): 在编译程序时,我们会不断地使用“make -C dir”切换到其他目录,执行其他目录里的 Makefile。.... // 其他代码,比如 include 其他文件得到后面的 xxx 变量 First_target : $(xxx) $(yyy) // 在文件的后面再来完善 command F....一个 Makefile 文件可以包含规则以外的其他文本,但一个简单的 Makefile 文件仅仅需要包含规则。虽然真正的规则比这里展示的例子复杂,但格式是完全一样的。...内核的 Makefile 中用到大量的函数,现在介绍一些常用的。 3.4.1 字符串替换和分析函数 (1)$(subst from,to,text) 在文本text中使用to替换每一处from。

    9K10

    Makefile教程

    prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。这就是Makefile的规则。也就是Makefile中最核心的内容。...3.Makefile内容 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1.显式规则。显式规则说明了,如何生成一个或多个的目标文件。...7.5变量的替换函数 替换变量中指定的内容有两种方式。...(1)模式匹配替换字符串函数patsubst 用法如下: res=$(patsubst %.c,%.o,$(var) ) 以上表示将变量$(var)中所有以.c结尾的字符串变成.o结尾。...以上表示将变量foo中以.a结尾的字符串替换成.b结尾并返回结果。注意,字符串处理函数并不会改变原有的字符串,变量的替换引用规则也不会改变原来字符串

    4K53

    Linux 开发 | 学习 Makefile

    @(linux 编程)[开发技能, 工具使用] What is GNU Make Make 是控制工程中通过源码生成可执行文件其他相关文件的工具。... 基本例子 中,要输出 edit, 需要先编译 main.o...等文件。 recipe : 执行的命令。...---- Makefile 中的变量 Makefile 中的变量,就如程序中的宏定义,代表一个字串,在使用的地方展开,通过 $(variable) 表示变量的内容,和 shell 类似。...字符串处理函数 文本替换函数 简单替换 将“text”中的“from”部分替换为“to” $(subst from ,to ,text) # 例子 # 返回 : ‘fEEt on the strEEt...$(subst ee, EE, feet on the street) 模式替换 读取函数名后面的模式, 匹配“text”中符合的部分替换为第二个参数指定的内容

    5.4K10

    g++,CMake和Makefile了解一下

    这一步(预处理)主要做了宏的替换,和注释的消除。 ? 上图是test.i文件的最后部分,可以看见宏的替换和注释的消除。...当其中的一个target被修改后,整个规则中的其他target文件都会被重新编译或执行。 2. 隐晦规则: make的自动推导功能所执行的规则 3....变量的定义: Makefile中定义的变量,一般是字符串 4. 文件指示: Makefile中引用其他Makefile;指定Makefile中有效部分;定义一个多行命令 5....3.2 CMake编译流程 成功安装好CMake后我们再来说说如何在linux平台下使用CMake生成Makefile并编译的流程,如下: 1.编写CMake配置文件CMakeLists.txt,我们可以认为...看到这些代码是不是很闷逼,为了让大家明白CMakeLists.txt文件内容,接下来我说一下Cmake的一些常用命令,你就能很好的理解上面的代码了。

    1.6K20

    Linux makefile 教程 非常详细,且易懂

    一个需要我们注意的是,如果我们的文件名中有通配符,:“*”,那么可以用转义字符“/”,“/*”来表示真实的“*”字符,而不是任意长度的字符串。...“(sources:.c=.d)”中的“.c=.d”的意思是做一个替换,把变量(sources)所有[.c]的字串都替换成[.d],关于这个“替换”的内容,在后面我会有更为详细的讲述。...这个函数也就是把(foo)中的空格替换成逗号,所以 二、字符串处理函数 $(subst ,, ) 名称:字符串替换函数——subst。...功能:把字串中的字符串替换成。 返回:函数返回被替换过后的字符串。...这个动作很像数据库的”扩展C”语言(即在C语言中用”EXEC SQL”的样子执行SQL语句,在用cc/gcc编译之前,需要使用”扩展C”的翻译程序,cpre,把其翻译成标准C)。

    4.3K20

    Linux从入门到入土③(GCC、静态与动态链接库、Git、Make、Makefile)

    例如:前提:在刚创建的repo_git目录(或子目录)下建立文件 “README.txt”,添加内容git add README.txt # 没有输出git commit –m “A description...makefile 中的变量是没有类型的,直接创建变量然后给其赋值就可以了。创建变量之后一定要赋值在给 makefile 中的变量赋值之后,如何在需要的时候将变量值取出来呢?# 如何将变量的值取出?...(patsubst ,,)参数功能:pattern: 这是一个模式字符串,需要指定出要被替换文件名中的后缀是什么文件名和路径不需要关心,因此使用...% 表示即可 通配符是 %在通配符后边指定出要被替换的后缀,比如: %.c, 意味着 .c 的后缀要被替换掉replacement: 这是一个模式字符串,指定参数 pattern 中的后缀最终要被替换为什么还是使用...% 来表示参数 pattern 中文件的路径和名字在通配符 % 后边指定出新的后缀名,比如: %.o 这表示原来的后缀被替换为 .otext: 该参数中存储这要被替换的原始数据返回值:函数返回被替换过后的字符串

    1.5K10

    Makefile经典教程(掌握这些足够)

    一个需要我们注意的是,如果我们的文件名中有通配符,:“*”,那么可以用转义字符“\”,“\*”来表示真实的“*”字符,而不是任意长度的字符串。....c=.d) 上述语句中的“$(sources:.c=.d)”中的“.c=.d”的意思是做一个替换,把变量$(sources)所有[.c]的字串都替换成[.d],关于这个“替换”的内容,在后面我会有更为详细的讲述...二、字符串处理函数 $(subst ,, ) 名称:字符串替换函数——subst。...功能:把字串中的字符串替换成。 返回:函数返回被替换过后的字符串。...这个动作很像数据库的"扩展C"语言(即在C语言中用"EXEC SQL"的样子执行SQL语句,在用 cc/gcc编译之前,需要使用"扩展C"的翻译程序,cpre,把其翻译成标准C)。

    2.7K20

    Linux:进程控制(二.详细讲解进程程序替换

    文章目录 1.进程程序替换 1.1概念 1.2原理 1.3使用一个`exec` 系列函数 execl()函数 结论与细节 2.多进程时的程序替换 3.其他几个exec系列函数 也可以调用其他语言的程序...想要生成两个可执行文件makefile 1.进程程序替换 之前我们进行的程序演示里,都只能运行自己的代码。...后面在引入多进程的情况 1.1概念 进程程序替换是指在运行过程中将一个进程的地址空间中的代码、数据和堆栈等内容完全替换为另一个程序的代码、数据和堆栈的过程。...其中每个元素都是一个字符串,表示命令行参数。...int putenv(const char *string); 使用全新的环境变量,就使用execle()函数,那么替换后的代码切换后的环境变量就只是我们传入的表里的内容 也可以调用其他语言的程序 code.c

    19310

    Linux:常用软件、工具和周边知识介绍

    底行模式(Command mode) 在底行模式下,我们可以将文件保存或退出,也可以进行查找字符串等操作。...复制和粘贴: 使用 yw 复制光标所在位置到单词末尾的内容,yy 复制整行。 使用 p 粘贴已经复制或删除的内容到光标位置后。 替换: 使用 r 替换光标所在位置的字符。...-w: 不生成任何警告信息 3.2编译过程 编译过程通常包括以下四个阶段: 预处理(Preprocessing): 在这个阶段,预处理器将源代码中的预处理指令(替换、条件编译等)处理成适合编译器进一步处理的形式...以下是 Makefile 文件的基本结构: target: dependencies command target 是一个需要构建的目标文件名,可以是可执行文件、目标文件或者是伪目标( clean...test_make 在Makefile中,依赖关系表示目标文件依赖于哪些其他文件,而依赖方法表示如何生成目标文件 依赖关系: 在Makefile中,每个目标文件都有一组依赖关系,这些依赖关系指示了生成目标文件所需的其他文件或操作

    23010
    领券