新建目录如下:

├─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头文件了。

最新文章

  1. python脚本后台运行
  2. swiper插件 纵向内容超出一屏解决办法
  3. CentOS 6.5 下 CDH 5.2.1 集群安装(一)
  4. SQL查询符合条件的记录的总数
  5. CentOS安装keepalived
  6. Swift基础之闭包
  7. .Net AppDomain.CurrentDomain.AppendPrivatePath(@&quot;Libs&quot;);
  8. jquery_dialog实现效果
  9. CSS学习进度备忘
  10. oracle学习----访问路径
  11. hdu_5805_NanoApe Loves Sequence(xjb搞)
  12. java删除文件夹 Java中实现复制文件或文件夹
  13. h5的video标签
  14. JS前端调用后台方法
  15. MonkeyRunner 综合实践
  16. hyperscan应用参数
  17. Linux学习笔记7
  18. [转帖]浪潮openstack的逆袭
  19. Eclipse编译Android项目时出现的问题:Android requires compiler compliance level 5.0 or 6.0. Found &#39;1.8&#39; instead.
  20. Python 单列

热门文章

  1. abp(net core)+easyui+efcore仓储系统——解决方案介绍(二)
  2. flask--数据库连接--URL
  3. 符号替换问题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
  4. cf1051F. The Shortest Statement(最短路)
  5. php 出现空格,换行原因
  6. zabbix-3.4-服务监控
  7. 画报表框架——Echarts.js
  8. 实战:ADFS3.0单点登录系列-前置准备
  9. 关于前端的交互 ajax
  10. IOS storyboard(控件器的 生命周期)