makefile学习(2)
2024-08-29 18:08:01
新建目录如下:
├─include
│ integrate.h
│
└─src
│ integrate.c
│ main.c
│ makefile
│
└─obj
obj用于存放object文件。
makefile如下:
IDIR = ../include
CC = gcc
CFLAGS = -I$(IDIR) ODIR = obj
LDIR = ../lib LIBS = -lm _DEPS = integrate.h
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS)) _OBJ = main.o integrate.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ)) $(ODIR)/%.o: %.c $(DEPS)
$(CC) $(CFLAGS) -c $< -o $@ main: $(OBJ)
$(CC) $(CFLAGS) $(LIBS) $^ -o $@ .PHONY: clean clean:
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ *.exe
输出结果:
gcc -I../include -c main.c -o obj/main.o
gcc -I../include -c integrate.c -o obj/integrate.o
gcc -I../include -lm obj/main.o obj/integrate.o -o main
patsubst格式如下:
$(patsubst <pattern>,<replacement>,<text> )
模式字符串替换函数——patsubst。
功能:查找<text>中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pattern>,如果匹配的话,则以<replacement>替换。
这里,<pattern>可以包括通配符“%”,表示任意长度的字串。如果<replacement>中也包含“%”,那么,<replacement>中的这个“%”将是<pattern>中的那个“%”所代表的字串。
(可以用“\”来转义,以“\%”来表示真实含义的“%”字符)
返回:函数返回被替换过后的字符串。
示例:
$(patsubst %.c,%.o, a.c b.c)
把字串“a.c b.c”符合模式[%.c]的单词替换成[%.o],返回结果是“a.o b.o”
上例中:
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))的意思是:把字符串“integrate.h”替换成:“../include/integrate.h”
这样make就能找到integrate.h头文件了。
最新文章
- python脚本后台运行
- swiper插件 纵向内容超出一屏解决办法
- CentOS 6.5 下 CDH 5.2.1 集群安装(一)
- SQL查询符合条件的记录的总数
- CentOS安装keepalived
- Swift基础之闭包
- .Net AppDomain.CurrentDomain.AppendPrivatePath(@";Libs";);
- jquery_dialog实现效果
- CSS学习进度备忘
- oracle学习----访问路径
- hdu_5805_NanoApe Loves Sequence(xjb搞)
- java删除文件夹 Java中实现复制文件或文件夹
- h5的video标签
- JS前端调用后台方法
- MonkeyRunner 综合实践
- hyperscan应用参数
- Linux学习笔记7
- [转帖]浪潮openstack的逆袭
- Eclipse编译Android项目时出现的问题:Android requires compiler compliance level 5.0 or 6.0. Found &#39;1.8&#39; instead.
- Python 单列
热门文章
- abp(net core)+easyui+efcore仓储系统——解决方案介绍(二)
- flask--数据库连接--URL
- 符号替换问题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- cf1051F. The Shortest Statement(最短路)
- php 出现空格,换行原因
- zabbix-3.4-服务监控
- 画报表框架——Echarts.js
- 实战:ADFS3.0单点登录系列-前置准备
- 关于前端的交互 ajax
- IOS storyboard(控件器的 生命周期)