Makefile简记

SRCS:= $(wildcard *.c)
OBJS:= $(patsubst %.c,%.o,$(SRCS))
CC:= gcc
server: $(OBJS)
	$(CC) $^ -o $@ -pthread -g
%.o:%.c
	$(CC) -c $^ -o $@ -g 
clean:
	$(RM) $(OBJS) server
rebuild:clean server

第一行 :使用 :=

               可以理解为直接赋值,将右侧的值赋给SRCS,wildcard *.c  表示扩展开后续目标目录中的  .c 文件 (此处是当前目录下的所有.c文件)。

                SRCS:= $(wildcard *.c  ./filepath/.c)  :此处为匹配扩展当前目录下的c文件和 ./filepath/文件下的c文件

第二行:patsubst

格式:$(patsubst <pattern>,<replacement>,<text> ) 

名称:模式字符串替换函数——patsubst。
功能:查找<text>中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pattern>,如果匹配的话,则以<replacement>替换。

   此处就是,将SRCS中的c文件替换为后缀为 .o 的文件,因为最终的目标文件server(可执行文件是server)依赖各个相关的.o文件,直接替换名称,下面几行步骤编译时,可以不用挨个写出所涉及的.o文件名了,OBJS代表所有.o文件

参考链接:Makefile之patsubst - Geeking - 博客园 (cnblogs.com)

第五行:符号示意

Makefile入门二、理解$@、$^和$<_makefile $<_hjxu2016的博客-优快云博客

$^  所有依赖文件

$@ 表示所有目标文件

犯错经历:!!!!一定注意拼写,单词的拼写错误

1、第一行命令行写错

SRCS:=$(wildcard *.c)  
//误写为以下方式
SRCS:=$(wildcard %.c)   //通配符错误

会产生无法找到目标文件的现象。(这里感觉make运行第一行接下面指令的时候,没有找到匹配的.c 文件名)

cmake设置生成文件的位置 - 简书 (jianshu.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值