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

使用makefile根据两个后缀规则处理文件

是一种常见的构建工具,它可以自动化地处理源代码文件的编译、链接和执行等操作。下面是对这个问题的完善且全面的答案:

  1. 概念:makefile是一个文本文件,其中包含了一系列规则和命令,用于描述源代码文件之间的依赖关系和构建过程。通过make命令解析makefile文件,可以根据规则自动化地构建项目。
  2. 分类:makefile可以根据不同的需求进行分类,常见的分类包括:
    • 单目标makefile:只包含一个目标和对应的规则,用于构建单个可执行文件或库文件。
    • 多目标makefile:包含多个目标和对应的规则,用于构建多个可执行文件或库文件。
    • 通用makefile:可以根据不同的参数构建不同的目标,用于构建不同平台或配置的可执行文件或库文件。
  • 优势:使用makefile进行构建有以下优势:
    • 自动化构建:通过定义规则和依赖关系,可以自动化地进行编译、链接和执行等操作,提高开发效率。
    • 灵活性:makefile支持条件判断、循环和变量等功能,可以根据不同的需求进行灵活配置和扩展。
    • 可维护性:makefile可以将项目的构建过程描述清晰,易于维护和修改。
  • 应用场景:makefile广泛应用于各种编程语言的项目中,特别适用于大型项目和跨平台项目的构建。它可以管理源代码文件之间的依赖关系,自动化地进行编译、链接和执行等操作。
  • 推荐的腾讯云相关产品和产品介绍链接地址:
    • 腾讯云容器服务(Tencent Kubernetes Engine,TKE):https://cloud.tencent.com/product/tke
    • 腾讯云函数计算(Tencent Cloud Function Compute,SCF):https://cloud.tencent.com/product/scf
    • 腾讯云对象存储(Tencent Cloud Object Storage,COS):https://cloud.tencent.com/product/cos
    • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
    • 腾讯云人工智能(Tencent AI):https://cloud.tencent.com/product/ai

请注意,以上链接仅供参考,具体的产品选择应根据实际需求和情况进行评估和决策。

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

相关·内容

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

在前文中演示了使用awk和sed命令正则查找和替换Makefile文件中的make clean操作规则:把-(RM) (ULT_BIN)和-(RM) (ULT_BIN)这两句写成一句-(RM) (ULT_BIN...) 1 具体功能需求 要实现的效果如果上图所示,左边表示之前的Makefile文件,右边是通过本次Shell脚本处理后的Makefile文件,红色部分就是需要点。...所以不会调用gen_depend包生成.d依赖文件了,而是按照默认隐含的gcc或者g++编译规则生成.o文件。...所以为了批量替换掉虚拟机中项目现有所有的Makefile文件,BZ选择用包含sed和awk命令的shell脚本来处理。...同前文的脚本框架一样,这里先使用for ... in的Makefile文件遍历中,然后利用了awk命令的正则匹配查找、替换操作,然后是sed命令执行正则匹配查找、替换以及追加操作。

18810

使用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+\+的形式。...文件,然后先做正则查找测试,结果如下图所示: 4 Linux find 命令中正则 在find命令的某个参数使用正则,那么最好对这个对数加上双引号,正如上面的代码"${SEARCH_NAME}"所示,否则会出现下面的错误

15610

使用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命令执行正则匹配查找、替换以及删除操作。...SEARCH_NAME="Makefile*" # The maximum depth of the dirs where files such as Makefile you're dealing with...文件,然后先做正则查找测试,结果如下图所示: 4 Linux find 命令中正则 在find命令的某个参数使用正则,那么最好对这个对数加上双引号,正如上面的代码"${SEARCH_NAME}"所示,否则会出现下面的错误

17110

使用处理根据项目工程文件生成Nuget包并发布(支持.NET Core)

最近在使用之前自己编写的批处理给.NET Core项目打包时出问题了,发现之前的脚本根本不适用了,折腾了半天,总算解决了。因此在这里分享下经验,并且奉上整理好的脚本。...) :: 推送包 nuget push %nupkg% {your api key} -Source https://www.nuget.org/api/v2/package 如上所示,这里需要传入两个参数...如果是普通的.NET 库,我们可以在工程的AssemblyInfo.cs文件中设置: [assembly: AssemblyTitle("Magicodes.WeChat.SDK")] [assembly...: AssemblyDescription("Magicodes.WeChat.SDK为湖南心莱信息科技有限公司基于微信业务封装的工具包,以便更便捷更简单的调用和使用微信接口,以更好地和自己的业务结合。...目前,.NET Core类库通过批处理打包会出现包属性中文乱码的问题。 调用脚本 首先我们得确认目录结构和相关必须文件位置是否正确,如下所示: ?

53630

如何使用Makefile在Ubuntu上自动执行重复任务

文件后缀规则 如果进行文件处理,可以使用的另一个功能是文件后缀。这些是一般规则,提供了一种基于扩展名处理文件的方法。...这告诉make我们将在文件后缀使用的所有后缀。默认情况下包含一些常用于编译源代码的后缀,如“.c”和“.o”文件,不需要在此声明中标记。 下一部分是实际后缀规则的声明。...然后它将在目录中查找“.png”替换为“.jpg”的目标文件。然后它将执行后面的命令。 后缀规则使用了一些我们尚未介绍的变量。这些帮助根据当前流程的哪个部分替换不同的信息: $?...为了以理智的方式处理这些问题,我们可以将程序中的名称更改为.jpg文件,以便我们的处理行更简单: 我们将使用以下两个代替上述内容: JPEG=$(wildcard *.jpg *.jpeg) #...所有这些新目标都列出了我们收集的.png文件名作为要求。然后看看是否有一种方法可以获取.png文件使用后缀规则来执行此操作。

2.3K00

Linux 下的make命令与Makefile

会自动包含“foo.d”和“bar.d”这两个makefile。...或是gz文件。 TAGS:这个伪目标功能是更新所有的目标,以备完整地重编译使用。 check和test:这两个伪目标一般用来测试makefile的流程。...一般是是源文件(或依赖文件),Make会根据规则推导来运行依赖于这个文件的命令,一般来说,可以和“-n”参数一同使用,来查看这个依赖文件所发生的规则命令。...用“后缀规则”来定义隐含规则会有许多的限制。使用“模式规则”会更回得智能和清楚,但“后缀规则”可以用来保证我们Makefile的兼容性。...请注意,在下面,我们没有提到后缀规则,原因是,所有的后缀规则Makefile被载入内存时,会被转换成模式规则

10.1K20

makefile

也就是Makefile中最核心的内容。 例如,假设有一个C源文件test.c,该源文件包含有自定义的头文件test.h,则目标文件test.o明确依赖于两个文件:test.c和test.h。...GNU make 支持两种类型的隐含规则: (1)后缀规则(Suffix Rule)。后缀规则是定义隐含规则的老风格方法。...后缀规则定义了将一个具有某个后缀文件 (例如,.c 文件)转换为具有另外一种后缀文件(例如,.o 文件)的方法。...每个后缀规则两个成对出现的后缀名定义,例如,将 .c 文件转换为 .o 文件后缀规则可定义为: .c.o: $(CC) $(CCFLAGS) $(CPPFLAGS) -c -o $@ $<...2.4 Makefile中的函数 在Makefile中可以使用函数来处理变量,从而让命令或规则更为的灵活和具有智能,函数调用,很像变量的使用,也是以“$”来标识的,函数调用后,函数的返回值可以当做变量来使用

1.9K00

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

而且,为了避免混乱,make不允许把整个条件语句分成两部分放在不同的文件中。 使用函数 ———— 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。...一般是是源文件(或依赖文件),Make会根据规则推导来运行依赖于这个文件的命令,一般来说,可以和“-n”参数一同使用,来查看这个依赖文件所发生的规则命令。...我们还可以通过“模式规则”的方式写下自己的隐含规则。用“后缀规则”来定义隐含规则会有许多的限制。使用“模式规则”会更回得智能和清楚,但“后缀规则”可以用来保证我们Makefile的兼容性。...后缀规则有两种方式:”双后缀”和”单后缀”。 双后缀规则定义了一对后缀:目标文件后缀和依赖目标(源文件)的后缀。如”.c.o”相当于”%o : %c”。单后缀规则只定义一个后缀,也就是源文件后缀。...后缀规则中所定义的后缀应该是make所认识的,如果一个后缀是make所认识的,那么这个规则就是单后缀规则,而如果两个连在一起的后缀都被make所认识,那就是双后缀规则

4.3K20

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

使用函数 ———— 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。...一般是是源文件(或依赖文件),Make会根据规则推导来运行依赖于这个文件的命令,一般来说,可以和“-n”参数一同使用,来查看这个依赖文件 所发生的规则命令。...我们还可以通过“模式规则”的方式写下自己的隐含规则。用“后缀规则”来定义隐含规则会有许多的限制。使用“模式规则”会更回得智能和清楚,但“后缀规则”可以用来保 证我们Makefile的兼容性。...为了和老版本的Makefile兼容,GNU make同样兼容于这些东西。后缀规则有两种方式:"双后缀"和"单后缀"。 双后缀规则定义了一对后缀:目标文件后缀和依赖目标(源文件)的后缀。...后缀规则中所定义的后缀应该是make所认识的,如果一个后缀是make所认识的,那么这个规则就是单后缀规则,而如果两个连在一起的后缀都被make所认识,那就是双后缀规则

2.6K20

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

例如:生成可执行文件的目标文件(*.o)可以作为依赖使用如果规则的命令中不需要任何依赖,那么规则的依赖可以为空当前规则中的依赖可以是其他规则中的某个目标,这样就形成了规则之间的嵌套依赖可以根据要执行的命令的实际需求...-c b.c# 规则4c.o:c.cgcc -c c.c在这个例子中,如果执行 make 命令就会根据这个 makefile 中的 4 条规则编译这三个源文件。...make 命令执行的时候会根据文件的时间戳判定是否执行 makefile 文件中相关规则中的命令。...-c b.c# 规则4c.o:c.cgcc -c c.c根据上文的描述,先执行 make 命令,基于这个 makefile 编译这几个源文件生成对应的目标文件。...自动推导make 是一个功能强大的构建工具,虽然 make 需要根据 makefile 中指定的规则来完成源文件的编译。

1.5K10

实战Makefile前,该知道那些知识?

make与make clean 生成目标文件规则(make命令): 执行make命令则会根据当前目录的Makefile文件定义的规则生成对应的目标文件。...清空目标文件规则(make clean命令): 每个Makefile中都应该写一个清空目标文件( .o 和目标文件等)的规则,这不仅便于重编译,也很 利于保持文件的清洁。...: @cd /home/rice;pwd 结果: /home/rice 从上面两个例子可以证明命令依赖的规则。...这些变量可以让我们更加快速的完成Makefile的编写,其中自动变量只能在规则中的命令使用,常用的自动变量如下: $@:规则中的目标 $<:规则中的第一个依赖文件 $^:规则中的所有依赖文件 CC...提供了大量的函数,其中我们经常使用的函数主要有两个(wildcard,patsubst)。

45920

Makefile教程

注意,字符串处理函数并不会改变原有的字符串,变量的替换引用规则也不会改变原来字符串。实际上变量的替换引用是模式匹配替换函数patsubst的一个简化实现。...原来这种是老式的“双后缀规则”,编译器会自动将Makefile所在目录的.cpp识别为源文件后缀,而.o识别为输出文件后缀。特别需要注意的是,后缀规则不允许任何依赖文件,但也不能没有命令。...后缀规则不允许任何的依赖文件,如果有依赖文件的话,那就不是后缀规则,那些后缀统统被认为是文件名,如: .c.o: foo.h $(CC) -c $(CFLAGS) $(CPPFLAGS...) -o $@ $< 综合来看,双后缀规则不太方便,建议还是放弃这种旧式写法。...8.小结 实际上,Makefile中还有很多基础知识点和复杂的特性并未在文中赘述,比如各种函数的用法、嵌套执行make、双后缀规则、定义命令包等,这些需要我们在实际使用过程中去熟悉掌握。

3.9K53

Make

执行make命令需要一个Makefile文件,来定义整个项目的编译规则makefile定义了模块间的依赖关系,指定文件的编译顺序,以及编译所使用的命令。...###二、Make的一般使用: 1、Makefile的基本构成: Makefile规则构成,一条规则生成一个或多个目标文件,其格式如下: 目标文件列表 分隔符 依赖文件列表 [;命令] //[]中的内容可选...有些规则没有命令,只是说明文件之间的依赖关系。 隐含规则:由make根据目标文件而自动推导出的规则。...文件指示:包括三个部分,一个类似于c语言中的include语句,可以将另一个makefile文件包含进来;二是根据情况指定makefile中的有效部分,就像c语言中的预编译#if一样;三是定义一个多行的命令....SUFFIXES:该目标的依赖被认为是一个后缀列表,在检查后缀规则使用。 .SILENT:生成该目标文件的依赖文件所执行的命令都不被打印,如果其后无依赖文件,则所有的命令都不会被打印。

1.9K100

6_Makefile与GCC

处理就是将要包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些东西输出到一个“.i”文件中等待进一步处理。...编译器利用这4个步骤中的一个或多个来处理输入文件,源文件后缀名表示源文件所用的语言,后缀名控制着编译器的缺省动作 后缀名语言种类后期操作.cC源程序预处理、编译、汇编.CC++源程序预处理、编译、汇编...gcc根据选项的规则将输入文件编译生成适当的输出文件。 ​ gcc的选项非常多,常用的选项,它们大致可以分为以下几类 。...预处理就是将要包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些东西输出到一个“.i”文件中等待进一步处理。...6.4.3 Makefile规则 6.4.3.1 命名规则: ​ 一般来说将Makefile命名为Makefilemakefile都可以,当很多源文件的名字是小些,所以一般使用Makefile

3.5K10

Make 命令教程

比如,假设文件 a.txt 依赖于 b.txt 和 c.txt ,是后面两个文件连接(cat命令)的产物。那么,make 需要知道下面的规则。...总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。...二、Makefile文件的格式 构建规则都写在Makefile文件里面,要学会如何Make命令,就必须学会如何编写Makefile文件。...2.1 概述 Makefile文件由一系列规则(rules)构成。每条规则的形式如下。...f1.o: f1.c f2.o: f2.c 使用匹配符%,可以将大量同类型的文件,只用一条规则就完成构建。 3.5 变量和赋值符 Makefile 允许使用等号自定义变量。

2K40

浅谈 Make 命令

比如,假设文件 a.txt 依赖于 b.txt 和 c.txt ,是后面两个文件连接(cat命令)的产物。那么,make 需要知道下面的规则。...总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。...二、Makefile文件的格式 构建规则都写在Makefile文件里面,要学会如何Make命令,就必须学会如何编写Makefile文件。...2.1 概述 Makefile文件由一系列规则(rules)构成。每条规则的形式如下。...f1.o: f1.c f2.o: f2.c 使用匹配符%,可以将大量同类型的文件,只用一条规则就完成构建。 3.5 变量和赋值符 Makefile 允许使用等号自定义变量。

1.3K10

makefile文件编写「建议收藏」

$< 为规则中第一个prerequisite名称 3、内置命令: Makefile中内置了一些常用的命令,有字符串处理函数subst、patsubst、strip、findstring、filter、filter-out...: 规则makefile中最重要的概念,其告诉make 目标文件的依赖关系,以及如何生成及更新这些目标文件。...在makefile文件规则有2种,一种是显式规则,另一种是隐式规则。...隐式规则用于说明 何时及如何来重新生成一类目标文件根据其名称,其描述了目标是如何依赖于名称相似的文件(一般来说除去后缀信息,其目标与依赖文件的名称是一样的),并调用命令来创建或更新目标,比如 %.o :...在makefile中,我们通常要编写3种隐式规则,第1种为代码链接规则,第2种为源代码编译规则,第3种为汇编代码编译规则

2.3K10

Linux 开发 | 学习 Makefile

上面这段规则,目标targets 是 edit, Makefile 中,targets 是文件名也可以是标号(比如clean),多个用空格分开,可以使用通配符(shell)。.../inc 两个目录,冒号分隔,当前目录 搜索不到依赖文件的情况下,Make 就会依顺序进行搜索。 vpath (关键字) 注意:这不是一个变量,按照使用方式可以多次调用设定文件的搜索模式。...name.xxxx (在Makefile中 $ 有特殊含义,如果要表示它的字面意思需要写两个 $,所以 Makefile 中的四个 $ 传给Shell变成两个 $,而两个 $ 在Shell中表示当前进程的...两个变量,一个是 SHELL,一个是 MAKEFLAGS,这两个变量不管你是否 export,其总是要传递到下层 Makefile 中。...) # 去除后缀文件目录内的后缀(.)不包括 # 返回 : src/foo src-1.0/bar hacks $(basename src/foo.c src-1.0/bar hacks) $

5.3K10
领券