zoukankan      html  css  js  c++  java
  • Linux基础14-makefile

    makefile 是对项目的代码管理工具。

    在编写大型项目的时候,如果编译的文件多,文件所属的目录复杂。直接采用GCC编译,会很繁琐。因此,采用Makefile对编译文件进行管理。

    目的:了解makefile的文件写作格式

    命名方式:makefile 或者 Makefile

    规则:目标、依赖、命令

    目标:依赖条件
    
    (Tab)命令

    1.创建一个main.c文件

    #include<stdio.h>
    int main(){
            printf("hello world
    ");
            return 0;
    }

    2.创建对应的makefile文件

    sailfish@DESKTOP-GSV91L5:~/c_file$ cat makefile
    app:main.c
            gcc main.c -o app

    3.直接在makefile文件夹目录输入make

    sailfish@DESKTOP-GSV91L5:~/c_file$ make
    gcc main.c -o app
    sailfish@DESKTOP-GSV91L5:~/c_file$ ls
    app  main.c  makefile
    sailfish@DESKTOP-GSV91L5:~/c_file$ ./app
    hello world

    if makefile中有多个目标与依赖,可以分解为多个小依赖

    终极目标都写在第一条规则。

    Makefile向下检索,构建出一颗关系依赖树。

    从下向上执行命令,生成最终的目标文件。

    Makefile在每次生成时,会检查源文件时间,如果时间 目标文件:依赖条件,依赖条件晚于目标文件,则需要跟新目标文件。

    可以提高多文件程序的编程效率。

    Makefile  设置变量

      obj = main.o add.o sub.o mul.o

    取值:  

      app:$(obj)

        gcc $(obj) -o app

    Makefile  模式规则

      $< &@ makefile中的自动变量

    %.o:%c

      gcc -c $< -o &@  

       //   &<  规则中的第一个依赖

      //  &@  规则中的目标

      //  $^  规则中的所有依赖

    main.o:main.c

      gcc -c main.c -o main.o

    Makefile中自己维护的变量:

    CC == cc

    CPPFLAGS = -I

    CFLAGS = -WALL -g -c

    LDFLAGS = -L -l

  • 相关阅读:
    [bzoj1568]李超线段树模板题(标志永久化)
    [tyvj1860]后缀数组
    [poj3264]rmq算法学习(ST表)
    LintCode-82.落单的数
    LintCode-53.翻转字符串
    LintCode-56.两数之和
    LintCode-379.将数组重新排序以构造最小值
    LintCode-5.第k大元素
    LintCode-3.统计数字
    LintCode-4.丑数 II
  • 原文地址:https://www.cnblogs.com/sailifsh-lyh/p/10823852.html
Copyright © 2011-2022 走看看