【Linux】makefile(Linux项目自动化构建工具)

makefile(Linux项目自动化构建工具)

  • od -c add.h
  • 将add.h中所有内容显示出来,可用于查看最后一行有无换行符,有的编译器程序最后一行没有换行符编译不过去
    【Linux】makefile(Linux项目自动化构建工具)_第1张图片

  • gcc -c main.c -o main.o -I ../include

  • 头文件不在当前目录下,编译时找不到头文件,编译失败,-I 表示编译时不仅去系统包含的头文件中找,还去I指定的路径../include下去找头文件
    -I

创建Makefile : 将所有指令写入,方便执行

  • 脚本文件注释均以#开头
  • 目标文件:依赖文件
  • tab 命令 指定如何从依赖文件生成目标文件
    【Linux】makefile(Linux项目自动化构建工具)_第2张图片
    make执行过程:

  • make指令的时候 寻找Makefile文件的第一个目标,并生成它,这时,如果该目标所依赖得文件不存在,将不存在的文件作为目标继续寻找依赖文件,若依赖文件存在则生成,所有依赖文件生成好后,生成第一个目标文件

  • make指令后跟目标文件名,则寻找目标文件的依赖文件,若make指令后缺省则第一个为目标文件
  • make 是按照时间戳比较的:如果目标文件比依赖文件更新,说明未改动过,则make 目标文件最新,不再执行
  • make是按照时间戳比较的:若目标文件没有依赖文件,且目录下有该目标文件,则默认该文件为最新的,不再执行该目标文件
  • 伪目标: .PHONY : main .PHONY后跟的是伪目标,无论该目标是不是最新的,该目标也会执行
    【Linux】makefile(Linux项目自动化构建工具)_第3张图片
    进阶1

  • $^ 代表所有的依赖文件

  • $@ 代表所有的目标文件
  • $< 第一个依赖文件

  • 将gcc add.o sub.o mul.o main.o -o main改为gcc $^ -o main

  • 将gcc -c main.c -o main.o -I ../include改为gcc -c   o  − o @ -I ../include
    【Linux】makefile(Linux项目自动化构建工具)_第4张图片
    进阶2

  • 将目标文件:依赖文件add.o : add.c改为%.o:%.c

  • make将会递归执行所有的目标文件
    【Linux】makefile(Linux项目自动化构建工具)_第5张图片
    在Linux系统中
    sleep 秒
    usleep 微秒

小练习(●’◡’●):用makefile编写进度条

  • progressbar.c
    【Linux】makefile(Linux项目自动化构建工具)_第6张图片
  • makefile:
    【Linux】makefile(Linux项目自动化构建工具)_第7张图片
  • 运行结果:
    这里写图片描述

你可能感兴趣的:(Linux,makefile,项目自动化构建工具)