zoukankan      html  css  js  c++  java
  • makefile 自动生成依赖

    为什么需要自动生成依赖?

    一个工程中,各源文件常包含多个头文件。那么如何在makefile中管理这些依赖关系?查看各源文件包含的所有头文件,通过在makefile中手动添加、删除依赖关系。该种方法工作量大,维护难度高,不利于大型工程的维护。

    因此,需要一种:1、无需手动添加,编译器自动生成依赖关系;2、makefile中包含这些依赖关系,一头文件更新,可自动更新目标文件。

    如何自动生成依赖?

    1、编译器自动生成依赖选项

    参数说明:

      -M:告诉预处理器输出一个适合make的规则,用于描述各目标文件的依赖关系。

        规则如下:

        目标文件(源文件对应的目标文件名):依赖文件(源文件,以及所有include的头文件)

        规则可以是单行,若太长,用‘’-换行符续成多行。规则显示在标准输出,不产生与处理过的C程序。

      -MM:和“-M”类似,仅输出用户头文件“#include “file””,忽略系统头文件“#include <file>”。

      -MF file:将依赖关系写入到file中。

      -MT target / -MQ target:重新定义目标文件名

      -MD:将依赖关系输出到文件中,文件名是将输出文件名末尾的'.o'换成‘.d’产生。-MD继续指定的编译工作,而-M会阻止正常的编译任务。

     2、将依赖关系包含到makefile中

      通过include命令,将生成的依赖文件包含到makefile中。

      include指令符告诉make暂停读取当前的makefile文件,读取完include指令指定的makefile文件后,在继续读取暂停的文件。其单独占据一行,格式如下:

      include filenames...

      filenames可包含shell文件名的格式。

      include指令符开始处的空格是允许的,但是不允许出现Tab字符(以Tab字符开始的,make默认是命令行)。include与filenames之间用空格隔开,多个文件名之间也用空格隔开。文件名可包含变量及函数调用。

    使用示例

     

      

  • 相关阅读:
    5:《地牢守卫者》代码分析:EnemyController
    4:《地牢守卫者》代码分析:Enemy
    1:《地牢守卫者》代码解析PlayerController
    0:地牢守卫者开发框架
    7:《地牢守卫者》代码分析:DarkElf,DrakElfController
    6:《地牢守卫者》代码分析:GoblinPawn,GoblinController
    ABAP学习(1):基本语法介绍
    项目实例:车辆信息统计报表管理系统导出PDF怎么调样式?
    软件制作:模拟登陆之WebBrowser
    编程经验:邮件发送接收
  • 原文地址:https://www.cnblogs.com/beijiqie1104/p/10729168.html
Copyright © 2011-2022 走看看