当前位置: 首页 > news >正文

Makefile自动依赖

在这里插入图片描述

gcc -MMGCC 编译器的一个选项,用于生成依赖文件,即列出源文件所依赖的头文件。这通常用于自动化构建过程中,帮助 make 工具确定何时需要重新编译某个源文件。

  • 选项详解
    • M:生成一个依赖文件,列出所有依赖关系,包括系统头文件。
    • MM:生成一个依赖文件,仅列出用户定义的头文件,不包括标准系统头文件。
    • MMD:与 -MM 类似,但会将依赖信息输出到 .d 后缀的文件中。
    • MF file:指定依赖文件的输出路径。
    • MT target:指定依赖文件中的目标名称。
  • 示例用法
    • 文件目录结构
      .
      ├── func.c
      ├── func.h
      ├── main.c
      └── makefile
    • main.c
    #include "func.h"int main()
    {printHi();return 0;
    }
    
    • func.h
    #ifndef __FUNC_H__
    #define __FUNC_H__void printHi(void);#endif
    
    • makefile
    # Makefile
    CC=gcc
    CFLAGS=-WallSOURCE=$(wildcard *.c)
    OBJS=$(SOURCE: .c=.o) # 主构建规则
    all: $(OBJS)$(CC) $(CFLAGS) -o $@ $^%.o: %.c$(CC) $(CFLAGS) -c $< -o $@ @echo "Compiled $< to $@"
    # 规则来生成依赖文件
    %.d: %.c$(CC) -MM $< > $@
    # 包含所有生成的依赖文件
    -include $(wildcard *.d)# 清理规则
    clean:rm -f *.o allrm -f *.d
    
    • output
    gcc -Wall -o all main.c func.c
    Compiled main.c func.c to all
    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • package.json的 和 的区别,以及|| 和 | 的区别
  • 告别杂音,从 AI 音频降噪开始
  • 文件上传绕过最新版安全狗
  • CENTOS9+RSYSLOG+LOGROTATE收集日志
  • AI融合新突破:CNN与Transformer的强强联合!
  • 收银系统源码—多商户平台入驻商城+门店线下收银
  • 英伟达元宇宙平台Omniverse的学习,技术调研
  • 缺失值处理方法:代数/统计/机器学习算法补全数据(附Python-sklearn代码精美可视化绘图)
  • C# 事件总线 Event Bus
  • STM32G070KBT6的RTC HAL库使用
  • FFmpeg For Android入门NDK打印版本号
  • python自动化笔记:os模块和异常处理
  • 什么是设计模式?一文理解,通俗易懂!
  • Nacos原理自问
  • Spring Cloud Gateway实现API访问频率限制
  • [NodeJS] 关于Buffer
  • Android优雅地处理按钮重复点击
  • Asm.js的简单介绍
  • CODING 缺陷管理功能正式开始公测
  • CSS 专业技巧
  • ES6简单总结(搭配简单的讲解和小案例)
  • express如何解决request entity too large问题
  • Fastjson的基本使用方法大全
  • golang 发送GET和POST示例
  • iOS编译提示和导航提示
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Python十分钟制作属于你自己的个性logo
  • WebSocket使用
  • 基于 Babel 的 npm 包最小化设置
  • 简单基于spring的redis配置(单机和集群模式)
  • 前端面试之闭包
  • 前端相关框架总和
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 通过git安装npm私有模块
  • 微信小程序设置上一页数据
  • 我有几个粽子,和一个故事
  • 学习HTTP相关知识笔记
  • 进程与线程(三)——进程/线程间通信
  • 我们雇佣了一只大猴子...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​【已解决】npm install​卡主不动的情况
  • #java学习笔记(面向对象)----(未完结)
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (NSDate) 时间 (time )比较
  • (备忘)Java Map 遍历
  • (第一天)包装对象、作用域、创建对象
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (南京观海微电子)——COF介绍
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转载)(官方)UE4--图像编程----着色器开发