使用前需要在当前目录下建立一个obj文件夹,用来存放中间文件。*.d文件中包含了对应*.c的依赖文件,*.o文件为对应*.c文件的目标文件。

详细的Makfile资料可以看看GNU make中文手册和跟我一起写Makefile

Makefile通用模板CC=gcc
CFLAGS=-Wall

OBJPATH=obj                # .d文件和.o文件保存路径
TARGET=demo                # 最终可执行文件

default: $(TARGET)

SOURCE=a.c b.c                # 需要编译的.c文件
INCLUDE=

# 获取.d文件名集合
DEPS=$(addprefix $(OBJPATH)/, $(patsubst %.c, %.d, $(filter %.c, $(SOURCE))))
# 获取.o文件名集合
OBJS=$(addprefix $(OBJPATH)/, $(addsuffix .o, $(basename $(SOURCE))))

-include $(DEPS)

# 生成.d文件
$(OBJPATH)/%.d: %.c
    $(CC) $(INCLUDE) -MM $< | sed "1s|^|$(dir $@)|" |"
    sed "1{x;s|.*|$@: $<|;G;}" > $(basename $@).d

# 生成.o文件
$(OBJPATH)/%.o : %.c
    $(CC) $(CFLAGS) -o $@ -c $<

# 链接成可执行文件
$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) -o $@ $^

# 清理
clean:

rm -rf $(OBJPATH)/*.d $(OBJPATH)/*.o $(TARGET)

一个通用的Makefile模板-转相关推荐

  1. 一个通用的makefile写法,自动推导文件的依赖关系

    温习之用. 假设有两个头文件目录 header1,header2;两个cpp文件目录,src1,src2,一个lib目录 写一个完整的makefile步骤如下: 1 定义可执行文件的名称 TARGET ...

  2. 基于GDAL的一个通用的3×3模板函数

    在进行遥感图像处理时,经常会用到很多的模板算子,比如平滑锐化等,拉普拉斯算子,索伯尔算子等等.其实这些算法都一样,用一个模板窗口在图像上移动,然后把计算的结果写入图像中. 在查看GDAL源代码的时候, ...

  3. 一个STM32编译Makefile模板

    最近突然对STM32感兴趣,研究了一下.STM32的编译方式非常多,由于一直对gcc情有独钟,所以还是喜欢使用Makefile+gcc编译的方法.当时从51单片机转向AVR单片机开发时,也是通过这种方 ...

  4. python 一个通用的POC模板

    0x00 前言 平时工作中 需要编写poc 而poc 大多步骤是重复的 比如用户输入 等 因此写一套模板 直接套用即可 根据开普勒安全python教学视频学习编写 0x01 模板编写 1.1 引入库 ...

  5. 一个简单的Makefile模板

    FLAGS = -Wall -g INCLUDE=-I$(ACE_ROOT)/include ACE_LIB=-L$(ACE_ROOT)/lib N_LIB=-lACE DD=-DACE_HAS_EV ...

  6. 一个通用的Makefile

    https://lidabo.cnblogs.com/p/4521123.html 转载于:https://blog.51cto.com/13471359/2300376

  7. 一个适用各类场合的Makefile模板

    1.写在前面 对于Windows下开发,很多IDE都集成了编译器,如Visual Studio,提供了"一键编译",编码完成后只需一个操作即可完成编译.链接.生成目标文件.Linu ...

  8. 万能 Makefile 模板

    在 Linux 编程时,对于很多小工程来说,很多时候似乎没有必要用 autoconf 和 automake 工具来生成 Makefile,反而自己写一个 Makefile 更省事.这里给大家提供一个简 ...

  9. 关于中型工程的Makefile模板

    我们定义的中型工程 可能会有多层嵌套的源代码文件夹 一个源代码文件夹下可能有多个源代码子文件夹 中间文件应当在其源文件所在目录生成,而不是同一生成到一个目录下(如统一生成到obj目录下) (大多数情况 ...

最新文章

  1. JAVA写HTTP代理服务器(三)-https明文捕获
  2. thinkphp视频截图_thinkphp开发的搞笑视频网站
  3. python亲和性分析法推荐电影论文_数据挖掘-MovieLens数据集_电影推荐_亲和性分析_Aprioro算法...
  4. arr数组怎么取值_记一次思否问答的问题思考:Vue为什么不能检测数组变动
  5. 【树莓派】做一个备份镜像
  6. c语言a b的和 不用加号,力扣(LeetCode)刷题,简单题(第16期)
  7. C++ 操作sqlite
  8. 百倍训练效率提升,微软通用语言表示模型T-ULRv5登顶XTREME
  9. 配置虚拟机NAT模式连通外网并使用Xshell登陆
  10. Attachments
  11. WEB学习第四天(网页模型
  12. 深度学习经历过程(caffe学习过程)
  13. 数学家张益唐亲自评价关于攻克朗道西格尔零点猜想这个研究成果和意义!
  14. [TI TDA4 J721E] Sensor 鱼眼摄像头 LDC畸变校正模块LUT的创建和生成——详解
  15. 对接支付宝App支付和网页支付接口详解
  16. osgearth仿真平台(1)
  17. 64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场?
  18. Python中调用FRED报错ValueError: time data 'fred' does not match format '%Y-%m-%d'
  19. Java项目:ssm汽车租赁系统
  20. 链表与其多种接口实现1

热门文章

  1. 难道真的是RedBook错了?
  2. Android手机中第三方签名应用程序无法获得的permission
  3. Android获取CPU信息(CPU名字和主频)
  4. Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源
  5. 第10课 skymvc 企业网站制作
  6. android 从网络加载图片并显示
  7. 1.1 为什么选择Excel绘制论文图表
  8. 【算法】2 由股票收益问题再看分治算法和递归式
  9. 《每个设计师都应该掌握的50个css代码段》11~20段
  10. 利用ClustrMaps | GoStats | 51la | Google Analytics统计和分析访问量