makefile中findstring用法

合集下载

makefile中的特殊符号及关键字

makefile中的特殊符号及关键字

makefile中的特殊符号及关键字1.常见⾃动变量和含义* :表⽰⽬标⽂件的名称,不包含⽬标⽂件的扩展名。

+ :表⽰所有的依赖⽂件,这些依赖⽂件之间以空格分开,按照出现的先后为顺序,其中可能包含重复的依赖⽂件。

< :表⽰依赖项中第⼀个依赖⽂件的名称:依赖项中,所有⽬标⽂件时间戳晚的⽂件(表⽰修改过),依赖⽂件间以空格分开@ :⽬标项中⽬标⽂件的名称^ :依赖项中,所有不重复的依赖⽂件,以空格分开。

2.预定义变量Makefile中常⽤的变量及含义AR⽣成静态库库⽂件的程序名称arAS汇编编译器的名称asCC C语⾔编译器的名称ccCPP C语⾔预编译器的名称$(CC) -ECXX C++语⾔编译器的名称g++FC FORTRAN语⾔编译器的名称f77RM删除⽂件程序的名称rm -fARFLAGS⽣成静态库库⽂件程序的选项⽆默认值ASFLAGS汇编语⾔编译器的编译选项⽆默认值CFLAGS C语⾔编译器的编译选项⽆默认值CPPFLAGS C语⾔预编译器的编译选项⽆默认值CXXFLAGS C++语⾔编译器的编译选项⽆默认值FFLAGS FORTRAN语⾔编译器的编译选项⽆默认值3.设置搜索路径 指定需要搜索的⽬录, make 会⾃动找到指定⽂件的⽬录并添加到⽂件上。

VPATH = path1:path2:...4.递归make对于规模⽐较⼤的程序,需要多个⼈在多个⽬录下进⾏开发。

如果只⽤⼀个 Makefile 来维护就会⽐较⿇烦,因此可以在每个⽬录下建⽴⾃⼰的 Makefile ,然后在总控 Makefile 中调⽤⼦⽬录的 Makefile ⽂件。

⽬录结构如下:.├── add│├── add_float.c│├── add.h│├── add_int.c│└── Makefile├── main.c├── Makefile└── sub├── Makefile├── sub_float.c├── sub.h└── sub_int.c1.递归调⽤的⽅式add:cd add && $(MAKE)它等价于add:$(MAKE) -C add2.总控MakefileCC = gccCFLAGS = -O2TARGET = cacuexport OBJSDIR = $(shell pwd)/objs$(TARGET):$(OBJSDIR) main.o$(MAKE) -C add$(MAKE) -C sub$(CC) -o $(TARGET) $(OBJSDIR)/*.o$(OBJSDIR):mkdir -p $@main.o:%.o:%.c$(CC) -c $< -o $(OBJSDIR)/$@ $(CFLAGS) -Iadd -Isubclean:-$(RM) $(TARGET)-$(RM) $(OBJSDIR)/*.o如果总控 Makefile 中的⼀些变量需要传递给下层的 Makefile,可以使⽤ export 命令。

Makefile 常用函数表

Makefile 常用函数表

Makefile 常用函数表一、字符串处理函数1.$(subst FROM,TO,TEXT)函数名称:字符串替换函数—subst。

函数功能:把字串“TEXT”中的“FROM”字符替换为“TO”。

返回值:替换后的新字符串。

2.$(patsubst PATTERN,REPLACEMENT,TEXT)函数名称:模式替换函数—patsubst。

函数功能:搜索“TEXT”中以空格分开的单词,将否符合模式“TATTERN”替换为“REPLACEMENT”。

参数“PATTERN”中可以使用模式通配符“%”来代表一个单词中的若干字符。

如果参数“REPLACEMENT”中也包含一个“%”,那么“REPLACEMENT”中的“%”将是“TATTERN”中的那个“%”所代表的字符串。

在“TATTERN”和“REPLACEMENT”中,只有第一个“%”被作为模式字符来处理,后续的作为字符本上来处理。

在两个参数中当使用第一个“%”本是字符本身时,可使用反斜杠“\”对它进行转义处理。

返回值:替换后的新字符串。

函数说明:参数“TEXT”单词之间的多个空格在处理时被合并为一个空格,但前导和结尾空格忽略。

3.$(strip STRINT)函数名称:去空格函数—strip。

函数功能:去掉字串(若干单词,使用若干空字符分割)“STRINT”开头和结尾的空字符,并将其中多个连续空字符合并为一个空字符。

返回值:无前导和结尾空字符、使用单一空格分割的多单词字符串。

函数说明:空字符包括空格、[Tab]等不可显示字符。

4.$(findstring FIND,IN)函数名称:查找字符串函数—findstring。

函数功能:搜索字串“IN”,查找“FIND”字串。

返回值:如果在“IN”之中存在“FIND”,则返回“FIND”,否则返回空。

函数说明:字串“IN”之中可以包含空格、[Tab]。

搜索需要是严格的文本匹配。

5.$(filter PATTERN…,TEXT)函数名称:过滤函数—filter。

Makefile中的几个常见的符号及其含义

Makefile中的几个常见的符号及其含义

Makefile中的⼏个常见的符号及其含义= 是最基本的赋值:= 是覆盖之前的值= 是如果没有被赋值过就赋予等号后⾯的值+= 是添加等号后⾯的值“=”和“:=”的区别:1、“=”make会将整个makefile展开后,再决定变量的值。

也就是说,变量的值将会是整个makefile中最后被指定的值。

看例⼦: x = fooy = $(x) barx = xyz在上例中,y的值将会是 xyz bar ,⽽不是 foo bar 。

2、“:=”“:=”表⽰变量的值决定于它在makefile中的位置,⽽不是整个makefile展开后的最终值。

x := fooy := $(x) barx := xyz在上例中,y的值将会是 foo bar ,⽽不是 xyz bar 了。

'@' 符号的使⽤通常makefile会将其执⾏的命令⾏在执⾏前输出到屏幕上。

如果将‘@’添加到命令⾏前,这个命令将不被make回显出来。

例如:@echo --compiling module----; // 屏幕输出 --compiling module----echo --compiling module----; // 没有@ 屏幕输出echo --compiling module----' - ' 符号的使⽤通常删除,创建⽂件如果碰到⽂件不存在或者已经创建,那么希望忽略掉这个错误,继续执⾏,就可以在命令前⾯添加 -, -rm dir;-mkdir aaadir;ref:https:///u012989012/article/details/80572043。

makefile的用法

makefile的用法

makefile的用法Makefile是一种用于自动化编译程序的工具,它可以根据源代码文件的依赖关系,自动编译出最终的可执行文件。

Makefile的使用可以大大提高程序的开发效率和可维护性,下面我们来详细了解一下Makefile的用法。

一、Makefile的基本语法Makefile的基本语法由一系列规则组成,每个规则由以下几部分组成:1. 目标(Target):表示需要生成的文件名或者是一个伪目标,如clean。

2. 依赖(Prerequisites):表示生成目标所依赖的文件或者是其他目标。

3. 命令(Command):表示生成目标的具体命令。

例如,下面是一个简单的Makefile规则:```hello: main.o hello.ogcc -o hello main.o hello.omain.o: main.cgcc -c main.chello.o: hello.cgcc -c hello.c```这个Makefile规则表示需要生成一个名为hello的可执行文件,它依赖于main.o和hello.o两个目标文件。

生成hello文件的具体命令是gcc -o hello main.o hello.o。

同时,main.o和hello.o两个目标文件分别依赖于main.c和hello.c两个源代码文件,生成它们的具体命令是gcc -c main.c和gcc -c hello.c。

二、Makefile的常用命令1. make:执行Makefile文件,生成目标文件。

2. make clean:删除所有生成的目标文件。

3. make install:将生成的目标文件安装到指定的目录中。

4. make uninstall:卸载已经安装的目标文件。

5. make help:显示Makefile文件中定义的所有规则。

三、Makefile的高级用法1. 变量Makefile中可以定义变量,用于存储一些常用的参数或者路径。

makefile的语法规则

makefile的语法规则

Makefile的语法规则Makefile是GNU构建系统(GNU Build System,简称GNU Make),GNU Make是一个自动化构建工具,用于构建编译程序。

Makefile由一系列语法规则构成,这些规则定义了如何从源文件生成可执行文件或其他目标文件。

基本语法目标:目标是makefile要达到的最终目的,可以是一个可执行程序、一个库文件、一个文档文件等。

依赖:依赖是目标文件所依赖的其他文件,当依赖文件发生变化时,目标文件也需要重新生成。

命令:命令是生成目标文件所需的具体操作,可以是编译、链接、拷贝等。

示例:目标:hello依赖:hello.c命令:gcc -o hello hello.c这条规则定义了如何从源文件hello.c生成可执行文件hello。

当hello.c发生变化时,make会自动执行gcc -o hello hello.c命令重新生成hello可执行文件。

变量变量用于存储信息,变量名以开头,例如:CFLAGS = -Wall -O2这条代码定义了一个名为CFLAGS的变量,值为"-Wall -O2"。

变量可以在命令中使用,例如:目标:hello依赖:hello.c命令:gcc CFLAGS -o hello hello.c这条规则中,CFLAGS变量的值被用在了gcc命令中。

函数函数用于执行特定的任务,函数名以(开头,例如:(info 目标文件是 (TARGET))这条代码定义了一个名为info的函数,当make执行这条代码时,会输出“目标文件是(TARGET)”的信息。

目標:hello依賴:hello.c命令:(CC) (CFLAGS) -o hello hello.cCC = gccCFLAGS = -Wall -O2这条规则重写了上面两个规则。

CC和CFLAGS被定义为变量,并且在命令中使用了这些变量。

当make执行这条规则时,会使用gcc编译器和-Wall -O2编译标志来编译hello.c文件,并将输出的可执行文件命名为hello。

整理后的makefile中文手册

整理后的makefile中文手册

GNU make中文手册ver - 3.8翻译整理:徐海兵2004-09-11关于本书本文瑾献给所有热爱Linux的程序员!本中文文档版权所有。

本文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。

同时重点讨论如何为一个工程编写Makefile。

作为一个Linux程序员,make工具的使用以及编写Makefile是必需的。

系统、详细讲述make的中文资料比较少,出于对广大中文Linuxer 的支持,本人在工作之余,花了18个多月时间完成对‚info make‛的翻译整理,完成这个中文版手册。

本书不是一个纯粹的语言翻译版本,其中对GNU make的一些语法和用法根据我个人的工作经验进行了一些详细分析和说明,也加入了一些个人的观点和实践总结。

本书的所有的例子都可以在支持V3.8版本的GNU make的系统中正确执行。

由于个人水平限制,本文在一些地方存在描述不准确之处。

恳请大家在阅读过程中,提出您宝贵的意见,也是对我个人的帮助。

我的个人电子邮箱地址:xhbdahai@。

非常愿意和大家交流!共同学习。

阅读本书之前,读者应该对GNU的工具链和Linux的一些常用编程工具有一定的了解。

诸如:gcc、as、ar、ld、yacc等;同时在书写Makefile时,需要能够进行一些基本的shell编程。

这些工具是维护一个工程的基础。

如果大家对这些工具的用法不是很熟悉,可参考项目资料。

阅读本文的几点建议:1.如果之前你对GNU make没有了解、当前也不想深入的学习GNU make的读者。

可只阅读本文各章节前半部分的内容(作为各章节的基础知识)。

2.如果你已经对GNU make比较熟悉,你更需要关心此版本的新增特点、功能、和之前版本不兼容之处;也可以作为开发过程过程的参考手册。

3.之前你对GNU make没有概念、或者刚开始接触,本身又想成为一个Linux下的专业程序员,那么建议:完整学习本文的各个章节,包括了基础知识和高级用法、技巧。

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

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

Makefile经典教程(掌握这些⾜够)makefile很重要什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个⼯作,但我觉得要作⼀个好的和professional的程序员,makefile还是要懂。

这就好像现在有这么多的HTML的编辑器,但如果你想成为⼀个专业⼈⼠,你还是要了解HTML的标识的含义。

特别在Unix下的软件编译,你就不能不⾃⼰写makefile 了,会不会写makefile,从⼀个侧⾯说明了⼀个⼈是否具备完成⼤型⼯程的能⼒。

因为,makefile关系到了整个⼯程的编译规则。

⼀个⼯程中的源⽂件不计数,其按类型、功能、模块分别放在若⼲个⽬录中,makefile定义了⼀系列的规则来指定,哪些⽂件需要先编译,哪些⽂件需要后编译,哪些⽂件需要重新编译,甚⾄于进⾏更复杂的功能操作,因为makefile就像⼀个Shell脚本⼀样,其中也可以执⾏的命令。

makefile带来的好处就是——“⾃动化编译”,⼀旦写好,只需要⼀个make命令,整个⼯程完全⾃动编译,极⼤的提⾼了软件开发的效率。

make是⼀个命令⼯具,是⼀个解释makefile中指令的命令⼯具,⼀般来说,⼤多数的IDE都有这个命令,⽐如:Delphi的make,Visual C++的nmake,下GNU的make。

可见,makefile都成为了⼀种在⼯程⽅⾯的编译⽅法。

现在讲述如何写makefile的⽂章⽐较少,这是我想写这篇⽂章的原因。

当然,不同产商的make各不相同,也有不同的语法,但其本质都是在“⽂件依赖性”上做⽂章,这⾥,我仅对GNU的make进⾏讲述,我的环境是RedHat Linux 8.0,make的版本是3.80。

必竟,这个make是应⽤最为⼴泛的,也是⽤得最多的。

⽽且其还是最遵循于IEEE 1003.2-1992标准的(POSIX.2)。

在这篇⽂档中,将以C/C++的源码作为我们基础,所以必然涉及⼀些关于C/C++的编译的知识,相关于这⽅⾯的内容,还请各位查看相关的编译器的⽂档。

makefile文件语法

makefile文件语法

makefile文件语法Makefile是一种用于自动化构建过程的工具,它使用一种特定的语法来定义构建规则和依赖关系。

下面是一些Makefile的基本语法规则:1. 目标(Target):目标是指要构建的程序或文件。

它通常以冒号(:)开头,后面跟着一个或多个依赖项(dependencies)。

```makefiletarget: dependenciescommands```2. 依赖项(Dependencies):依赖项是指要构建目标所必需的文件或目标。

在Makefile中,依赖项以空格分隔。

3. 命令(Commands):命令是指在构建目标时执行的命令行指令。

这些命令可以是编译、链接或其他任何必要的操作。

4. 变量(Variables):Makefile允许使用变量来存储值,以便在构建过程中重复使用。

变量以符号开头,后面跟着变量名。

```makefileVAR = value```5. 模式规则(Pattern Rules):模式规则允许根据文件模式匹配来构建目标。

它们使用通配符来匹配文件名,并在匹配的文件上执行相应的命令。

```makefiletargets : patterncommands```6. 条件语句(Conditionals):Makefile支持条件语句,可以根据条件执行不同的命令或规则。

条件使用ifdef、ifndef、ifeq等关键字定义。

7. 注释(Comments):Makefile使用井号()作为注释标记,任何在该符号之后的内容都会被视为注释,并被忽略。

8. 自动变量(Automatic Variables):Makefile提供了一些自动变量,可以在命令中使用,以获取有关目标、依赖项或文件名的信息。

例如,$表示当前目标,$<表示第一个依赖项等。

这些是Makefile的一些基本语法规则,但还有更多高级特性和用法,可以参考Make工具的文档或相关教程进行深入学习。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

makefile中findstring用法
摘要:
一、什么是Makefile
二、Findstring的作用
1.搜索指定字符串
2.替换指定字符串
三、Findstring的用法
1.基本语法
2.示例
四、Findstring的进阶用法
1.匹配正则表达式
2.限定搜索范围
五、Findstring的实用场景
1.文件名匹配
2.代码片段搜索与替换
六、总结
正文:
一、什么是Makefile
Makefile是一种自动化构建工具,它可以帮助我们管理项目源代码的编译过程。

通过编写Makefile文件,可以简化编译过程,使得开发者能够更专注于编写代码。

在Makefile中,我们可以定义目标文件、依赖关系、编译命令等,
以实现自动编译、构建、部署等功能。

二、Findstring的作用
Findstring是Makefile中一个非常实用的功能,主要用于在源代码中搜索和替换指定字符串。

Findstring的使用可以简化编译过程中的人工搜索和替换工作,提高工作效率。

1.搜索指定字符串
2.替换指定字符串
三、Findstring的用法
1.基本语法
Findstring的基本语法如下:
```
Findstring 目标文件搜索字符串替换字符串
```
其中,目标文件是指需要搜索和替换的文件;搜索字符串是指需要查找的字符串;替换字符串是指用于替换找到的字符串的新字符串。

2.示例
以下是一个Findstring的示例:
```
Findstring myfile.txt "hello" "world"
```
该命令将在myfile.txt文件中搜索"hello",并将其替换为"world"。

3.进阶用法
Findstring还支持一些进阶功能,如下:
1.匹配正则表达式
2.限定搜索范围
例如:
```
Findstring myfile.txt "^hello" "world"
```
这个命令将只在myfile.txt文件的开头匹配"hello",并将其替换为"world"。

四、Findstring的实用场景
1.文件名匹配
Findstring可以用于搜索指定目录下符合特定条件的文件。

例如:
```
Findstring mydir/*.txt "^hello" "world"
```
该命令将在mydir目录下搜索所有以".txt"结尾的文件,并将文件名中包含"hello"的文件替换为"world"。

2.代码片段搜索与替换
在大型项目中,Findstring可以帮助开发者快速搜索和替换代码片段。

例如:
```
Findstring myfile.c "^s*printf(" "printf("
```
该命令将在myfile.c文件中搜索包含"printf("的代码片段,并将其替换为"printf("。

五、总结
Findstring是Makefile中一个非常实用的功能,可以帮助我们快速搜索和替换指定字符串。

通过掌握Findstring的用法,可以提高开发者在编译过程中的工作效率。

相关文档
最新文档