![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
makefile
腿毛都能控
自然规律,功能与物质的平衡
展开
-
UltraEdit基础使用
UltraEdit基础使用,仅供参考原创 2022-07-02 04:21:26 · 1550 阅读 · 0 评论 -
Makefile编译文件夹生成可执行文件解析
主makefile#设置编译器.PHONY:clean allCC=gccINCLUDE_DIR=-I../include C_FLAGS=#debug文件夹里的makefile文件需要最后执行,所以这里需要执行的子目录要排除debug文件夹,这里使用awk排除了debug文件夹,读取剩下的文件夹SUBDIRS=$(shell ls -l | grep ^d | awk '{if($$9 != "debug") if($$9 != "include") print $$9}')#无需下一行的原创 2021-06-23 00:37:43 · 2032 阅读 · 1 评论 -
Makefile中的$(addprefix)
$(addprefix src/,foo bar)返回值为“src/foo src/bar”。原创 2021-06-22 14:34:40 · 302 阅读 · 0 评论 -
Makefile与shell的用法差异
Makefile文件的目标项冒号后的另起一行的代码才是shell代码shell不允许‘=’号两边有空格哦makefile允许变量赋值时,'='号两边留空格xx=$(shell 这里的代码也是shell代码)Makefile中的shell,每一行是一个进程,不同行之间变量值不能传递。所以,Makefile中的shell不管多长也要写在一行Makefile中的变量以$开头, 所以,为了避免和shell的变量冲突,shell的变量以$$开头在Makefile中只能在target中调用Shel原创 2021-06-20 11:27:36 · 327 阅读 · 0 评论 -
Shell特殊变量:Shell $0, $#, $*, $@, $?, $$
$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$#传递给脚本或函数的参数个数$*传递给脚本或函数的所有参数$@传递给脚本或函数的所有参数$?上个命令的退出状态,或函数的返回值$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID$* 和 $@ 的区别$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" “)包含时,都以”$1" ...原创 2021-06-19 23:01:50 · 117 阅读 · 0 评论 -
Linux文本工具awk使用手册
grep更适合单纯的查找和匹配文本sed适合编辑匹配的文本awk适合格式化文本,倾向于把一行文本分成多个‘字段’来进行复杂的格式化操作。awk是逐行处理文本,将一行内容按照指定分隔符将行分割为多个字段,其中分割完后第一个字段为:$1,第二个为$2。 $0表示当前处理的整行。语法awk [option] 'partten1 {action1}; partten2 {action2}'常用参数 [option]-F 指定分隔符 ,如 awk -F, '{print $1,$2}'-v 定义原创 2021-06-19 22:54:58 · 139 阅读 · 0 评论 -
linux文本工具sed使用手册
原创 2021-06-19 22:48:29 · 114 阅读 · 0 评论 -
linux文本工具grep使用手册
原创 2021-06-19 22:46:11 · 102 阅读 · 0 评论 -
Makefile
单目录下的Makefile编写CC = gccexport CC#makefile中的扩展通配符wildcard,其含义是获取当前目录下所有的.c文件的文件名并赋值给变量SRCSRC :=${wildcard *.c}#替换通配符patsubst,含义是将SRC中的.c文件名替换为.o文件名,并将结果赋值给OBJSobjs := ${patsubst %.c,%.o,$(SRC)}#输出的可执行文件名称target := exe$(target): $(objs) $(CC原创 2021-06-19 15:54:16 · 213 阅读 · 0 评论