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

使用sed命令批量处理Makefile文件的脚本

前面写了一篇文章《Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile》,里面的Makefile代码有个不好的地方需要修改。...当编译.cpp文件时,使用的STD_OPT变量仍然是编译.c文件时的参数-std=c99,这个在C++中是不支持的。...1 sed命令的简要说明 由于sed命令可用的参数太多了,这里只列举脚本中用到的几个参数: 1 2 3 sed -i:直接修改文件而不是将处理的结果在屏幕上输出; sed -e:多个操作action按顺序执行...#echo "" | awk '{fflush()}' fi done 3 脚本执行结果 如上图所示,脚本不断遍历src目录下的Makefile文件,然后进行处理。...4 脚本管理 目前已经把这个脚本放在Github了,地址是https://github.com/vfhky/shell-tools,以后脚本的更新或者更多好用的脚本也都会加入到这个工程中。

23410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    跟我一起写Makefile:MakeFile介绍

    在这个makefile中,目标文件(target)包含:执行文件edit和中间目标文件(*.o),依赖文件(prerequisites)就是冒号后面的那些 .c 文件和 .h文件。...make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。...环境变量 MAKEFILES 如果你的当前环境中定义了环境变量MAKEFILES,那么,make会把这个变量中的值做一个类似于include的动作。这个变量中的值是其它的Makefile,用空格分隔。...只是,它和include不同的是,从这个环境变量中引入的Makefile的“目标”不会起作用,如果环境变量中定义的文件发现错误,make也会不理。...但是在这里我还是建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用make时,所有的Makefile都会受到它的影响,这绝不是你想看到的。

    99820

    跟我一起写Makefile

    在这个makefile中,目标文件(target)包含:执行文件edit和中间目标文件(*.o),依赖文件(prerequisites)就是冒号后面的那些 .c 文件和 .h文件。...make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。...环境变量 MAKEFILES 如果你的当前环境中定义了环境变量MAKEFILES,那么,make会把这个变量中的值做一个类似于include的动作。这个变量中的值是其它的Makefile,用空格分隔。...只是,它和include不同的是,从这个环境变量中引入的Makefile的“目标”不会起作用,如果环境变量中定义的文件发现错误,make也会不理。...但是在这里我还是建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用make时,所有的Makefile都会受到它的影响,这绝不是你想看到的。

    1.1K70

    make menuconfig执行流程分析

    规则的命令部分有两种书写方式: a、目标、依赖描述和命令放在同一行,目标和依赖描述使用冒号(:)分隔开,在依赖文件列表后使用分号(;)把依赖文件列表和命令分开。...b、目标和依赖描述放在同一行,目标和依赖描述使用冒号(:)分隔开;命令行在目标、依赖描述的下一行。当作为独立的命令行时此行必须以[Tab]字符开始。...在Makefile中,在第一个规则之后出现的所有以[Tab]字符开始的行都会被当作命令来处理。...规则的命令部分有两种书写方式: a、目标、依赖描述和命令放在同一行,目标和依赖描述使用冒号(:)分隔开,在依赖文件列表后使用分号(;)把依赖文件列表和命令分开。...b、目标和依赖描述放在同一行,目标和依赖描述使用冒号(:)分隔开;命令行在目标、依赖描述的下一行。当作为独立的命令行时此行必须以[Tab]字符开始。

    3.7K10

    7.管道、管道、环境变量与其他常用命令

    7.1 管道 概念: 管道类似于文件重定向,可以将前一个命令的 stdout 重定向到下一个命令的 stdin。 要点: 管道命令仅处理 stdout,会忽略 stderr。...所以未来所有新开的环境都会加载我们修改的内容。 常见环境变量: HOME:用户的家目录。 PATH:可执行文件(命令)的存储路径。路径与路径之间用:分隔。...LD_LIBRARY_PATH:用于指定动态链接库(.so文件)的路径,其内容是以冒号分隔的路径列表。 C_INCLUDE_PATH:C语言的头文件路径,内容是以冒号分隔的路径列表。...CPLUS_INCLUDE_PATH:CPP的头文件路径,内容是以冒号分隔的路径列表。 PYTHONPATH:Python导入包的路径,内容是以冒号分隔的路径列表。...JAVA_HOME:jdk的安装目录。 CLASSPATH:存放Java导入类的路径,内容是以冒号分隔的路径列表。

    65030

    一步步写属于自己的makefile

    但是当有成百上千个.c文件的时候,还要一个个敲,太难了。。。。。。聪明的程序员自然不会这么傻:如果下一个shell脚本,让其批量处理所有的文件不就好了吗。基于这个目的,Makefile诞生了。...所以,有时候需要删除之前编译的结果,makefile提供了为目标clean,一个小的完整makefile如下所示: # hello由hello.o生成,所以hello依赖于hello.o; # 依赖关系用冒号...新的makefile为: # hello由hello.o生成,所以hello依赖于hello.o及多个hellox.o文件; # 依赖关系用冒号(:)隔开,左边的叫做目标(target); # 右边称为依赖...新的makefile如下: # hello由hello.o生成,所以hello依赖于hello.o及多个hellox.o文件; # 依赖关系用冒号(:)隔开,左边的叫做目标(target); # 右边称为依赖...第一个参数,匹配模式;第二个参数,替换字符串;第三个参数,要替换的文本字符串。 wildcard 列举符合通配符表达式的所有源文件,输出以空格为分隔符的列表。

    65130

    NASM语法

    2.1.19 `NASMENV'环境变量。 如果你定义了一个叫'NASMENV'的环境变量,程序会被把它认作是命令行选项附加的一 部分,它会在真正的命令行之前被处理。...你可以通过在'NASMENV'中使用'-i'选项来定义包含文件的标准搜索路径。 环境变量的值是通过空格符分隔的,所以值'-s ic:\nasmlib'会被看作两个单独的操 作。...为了解决这个问题,NASM 为此提供了一个特性,如果你在'NASMENV'环境变量的第一个 字符处写上一个非减号字符,NASM就会把这个字符当作是选项的分隔符。所以把环 境变量设成'!-s!...你可以通过在'NASMENV'中使用'-i'选项来定 义包含文件的标准搜索路径。 环境变量的值是通过空格符分隔的,所以值'-s ic:\nasmlib'会被看作两个单独的操 作。...为了解决这个问题,NASM 为此提供了一个特性,如果你在'NASMENV'环境变量的第一个 字符处写上一个非减号字符,NASM 就会把这个字符当作是选项的分隔符。所以把环 境变量设成'!-s!

    2K20

    Linux学习笔记(四)

    附录 - 默认环境变量 bash shell 支持的Bourne变量 变量 描述 CDPATH 冒号分隔的目录列表,作为cd命令的搜索 HOME 当前用户的主目录 IFS sell用来将文本字符串分割成字段的一系列字符...MAIL 当前用户收件箱的文件名(bash shell会检查这个文件,看看有没有新的邮件) MAILPATH 冒号分隔的当前用户收件箱的文件名列表(bash shell会检查列表中的每个文件,看看有没有新邮件...) OPTARG getopts命令处理的最后一个选项参数值 OPTIND getopts命令处理的最后一个选项参数的索引号 PATH shell查找命令的目录列表,由冒号分隔 PS1 shell命令行界面的主提示符...模式被调用时) EUID 当前用户的有效用户ID (数字形式) FCEDIT 供fc命令使用的默认编辑器 FIGNORE 在进行文件名补全时可以忽略后缀名列表,由冒号分隔 FUNCNAME 当前执行的shell...函数的名称 续 变量 描述 FUNCNEST 当设置成非零值时,表示所允许的最大函数嵌套级数(一旦超出,当前命令即被终止) GLOBIGNORE 冒号分隔的模式列表,定义了在进行文件名扩展时可以忽略的一组文件名

    1.1K10

    浅谈 Make 命令

    : [tab] 上面第一行冒号前面的部分,叫做"目标"(target),冒号后面的部分叫做"前置条件"(prerequisites...目标通常是文件名,指明Make命令所要构建的对象,比如上文的 a.txt 。目标可以是一个文件名,也可以是多个文件名,之间用空格分隔。...$ make 上面代码执行Makefile文件的第一个目标。 2.3 前置条件(prerequisites) 前置条件通常是一组文件名,之间用空格分隔。...因为两行命令在两个不同的进程执行。一个解决办法是将两行命令写在一行,中间用分号分隔。...指代比目标更新的所有前置条件,之间以空格分隔。比如,规则为 t: p1 p2,其中 p2 的时间戳比 t 新,$?就指代p2。 (4)$^ $^ 指代所有前置条件,之间以空格分隔。

    1.3K10

    Make 命令教程

    : [tab] 上面第一行冒号前面的部分,叫做"目标"(target),冒号后面的部分叫做"前置条件"(prerequisites...目标通常是文件名,指明Make命令所要构建的对象,比如上文的 a.txt 。目标可以是一个文件名,也可以是多个文件名,之间用空格分隔。...因为两行命令在两个不同的进程执行。一个解决办法是将两行命令写在一行,中间用分号分隔。...指代比目标更新的所有前置条件,之间以空格分隔。比如,规则为 t: p1 p2,其中 p2 的时间戳比 t 新,$?就指代p2。 (4)$^ $^ 指代所有前置条件,之间以空格分隔。...$(patsubst %.c,%.o,x.c.c bar.c) (5)替换后缀名 替换后缀名函数的写法是:变量名 + 冒号 + 后缀名替换规则。它实际上patsubst函数的一种简写形式。

    2K40

    全网最牛Linux内核Makefile系统文件详解(纯文字代码)

    make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。...这个变量中的值是其它的Makefile,用空格分隔。只是,它和include 不同的是,从这个环境变中引入的Makefile的“目标”不会起作用,如果环境变量中定义的文件发现错误,make也会不理。...目录由“冒号”分隔。...需要注意的是,如果你要让上一条命令的结果应用在下一条命令时,你应该使用分号分隔这两条命令。...(如果make指定了“-e”参数,那么,系统环境变量将覆盖Makefile中定义的变量) 因此,如果我们在环境变量中设置了“CFLAGS”环境变量,那么我们就可以在所有的Makefile中使用这个变量了

    3.3K20

    Go 语言基础入门教程 —— Go 项目基本工程管理示例

    早期 Go 语言使用 makefile 作为临时方案,到了 Go 1 发布时引入了强大无比的 Go 命令行工具,Go 命令行工具彻底消除了工程文件的概念,完全用目录结构和包名来推导工程结构和构建顺序。...想想 C 语言编译、链接和安装可执行程序的繁琐步骤,首先要通过 configure 脚本对特定平台进行检测,比如是否包含 GCC 等编译工具,然后生成 Makefile 文件,该文件定义了编译、链接规则...: source ~/.bashrc 在 Windows 中,则可以通过配置环境变量 GOPATH 来实现,将你的项目根目录完整路径拷贝过去就好 了。...和 PATH 环境变量一样,GOPATH 也可以支持一次配置多个路径,并且路径和路径之间用冒号分隔。...我们不需要写 makefile,因为这个工具会替我们分析,知道目标代码的编译结果应该是一个包还是一个可执行文件,并分析 import 语句以了解包的依赖关系,从而在编译 calc.go 之前先把依赖的

    1.1K30

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

    make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。...这个变量中的值是其它的Makefile,用空格分隔。只是,它和include不同的是,从这个环境变中引入的Makefile的“目标”不会起作用,如果环境变量中定义的文件发现错误,make也会不理。...目录由“冒号”分隔。...(如果make指定了“-e”参数,那么,系统环境变量将覆盖Makefile中定义的变量) 因此,如果我们在环境变量中设置了“CFLAGS”环境变量,那么我们就可以在所有的Makefile中使用这个变量了...是函数的参数,参数间以逗号“,”分隔,而函数名和参数之间以“空格”分隔。

    4.3K20

    BashShell变量

    5.1 Bash Shell 支持的 Unix Bourne Shell 环境变量 变量 说明 CDPATH 冒号分隔的目录列表,作为 cd 命令的搜索路径 HOME 当前用户的主目录 IFS Shell...用来将文本字符串分割成字段的一系列字符 MAIL 当前用户收件箱的文件名(Bash Shell 会检查这个文件,看看有没有新邮件) MAILPATH 冒号分隔的当前用户收件箱的文件名列表(Bash Shell...,由冒号分隔 PS1 Shell 命令行界面的主提示符 PS2 Shell 命令行界面的次提示符 5.2 Bash Shell 定义的环境变量 变量 说明 BASH 当前 Shell 实例的全路径名...,由冒号分隔 FUNCNAME 当前执行的 Shell 函数的名称 FUNCNEST 当设置成非零值时,表示所允许的最大函数嵌套级数(一旦超出,当前命令即被终止) GLOBIGNORE 冒号分隔的模式列表...的全路径名 SHELLOPTS 已启用 Bash Shell 选项列表,列表项之间以冒号分隔 SHLVL Shell 的层级,每次启动一个新 Bash Shell,该值增加 1 TIMEFORMAT

    2.4K30

    【Linux必备工具】自动化构建工具makefile的使用详解

    而后面的依赖文件列表就是具有相关性的 object files,也就是目标文件所依赖的文件(可以是一个或多个,也可以没有) 简述一下其基本的语法规则: 目标文件与依赖文件列表文件之间要使用 :(冒号)...在 Makefile 中,空行被视为分隔符,用于区分不同的规则或目标。 当 Make 工具解析 Makefile 文件时,它会忽略空行,并将第一行之后的非空行视为第一个规则或目标。...函数:Makefile 支持一些内置函数,可以用于字符串处理、文件查找等操作。 使用make和make clean,就可以方便地完成项目自动化构建和清理。 3....make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。...(提高编译效率) 若源代码没有更改也重新编译,那么每次预处理编译汇编链接的时间比较长,成本高 make/Makefile是如何知道文件更改过的?

    22410

    make menuconfig makefile kconfig详解

    规则的命令部分有两种书写方式: a、目标、依赖描述和命令放在同一行,目标和依赖描述使用冒号(:)分隔开,在依赖文件列表后使用分号(;)把依赖文件列表和命令分开。...b、目标和依赖描述放在同一行,目标和依赖描述使用冒号(:)分隔开;命令行在目标、依赖描述的下一行。当作为独立的命令行时此行必须以[Tab]字符开始。...在Makefile中,在第一个规则之后出现的所有以[Tab]字符开始的行都会被当作命令来处理。...”:”,冒号(:)命令是bash的内建命令,通常把它看作true命令。...到这里我们分析完了menuconfig的依赖,在处理完这些依赖后就开始执行规则的命令:把 (Q) (Q)(MAKE)(build)=scripts/kconfig @这条命令展开: (Q) make -

    1.9K10

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

    在这个makefile中,目标文件(target)包含:执行文件edit和中间目标文件(*.o),依赖文件(prerequisites)就是冒号后面的那些 .c 文件和 .h文件。...make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。        ...这个变量中的值是其它的Makefile,用空格分隔。只是,它和include不同的是,从这个环境变中引入的Makefile的“目标”不会起作用,如果环境变量中定义的文件发现错误,make也会不理。...目录由“冒号”分隔。...(如果make指定了“-e”参数,那么,系统环境变量将覆盖Makefile中定义的变量) 因此,如果我们在环境变量中设置了“CFLAGS”环境变量,那么我们就可以在所有的Makefile中使用这个变量了

    2.8K20
    领券