• MAKEFILE编写学习--1


    makefile是在编译中大型程序中使用的自动化编译工具make依赖的指令文件。这样可以使得程序的编译更加便捷快速。
    makefile的一般规则如下:

    target ... : prerequisites ...
    command
    

    target即是一个目标文件,它可以是可执行程序、目标中间文件、标记(label)等。这个目标要想编译出来需要的前提条件就是prerequisites这些已存在的文件。编译过程中的规则则是由command里面的各个命令组成。command以一个Tab起头。make会比较目标文件与条件中的文件更新时间,一旦有文件被修改,make就会依赖于这些前提文件进行重新编译。makefile中第一个target会被认为是make的默认目标。
    prerequisites是空的时候,前面的目标文件被当成一个命令,使用make执行时会直接执行command里的命令。

    clean :
    	rm edit main.o kbd.o command.o display.o 
    	insert.o search.o files.o utils.o
    

    执行这个make clean会将当前文件夹下的几个中间文件删除掉。
    makefile中可以使用变量,类似于C语言中的宏:

    edit : main.o kda.o command.o
    	gcc -o edit main.o kda.o command.o
    

    这里面如果要向edit的依赖项中添加文件,那么也得向command中加入同样的文件,makefile一大,就很难批量处理,这时候可以声明变量:

    objects = main.o kda.o command.o
    

    那么上面的makefile可以改成:

    objects = main.o kda.o command.o
    
    edit : $(objects)
    	gcc -o edit $(objects)
    

    通过美元符号$(变量名)的方式来引用变量。
    make工具会.o文件对应的.c文件自动的添加到依赖关系中。如果找到一个foo.o,那么对应的foo.c就会自动的加入到依赖关系并且会在command中自动隐式添加一行gcc -o 。那么foo,o的生成就可以简写为:

    foo.o : other_files_list
    

    其中的command直接就不用写了。
    .PHONY用来修饰target,表示它是一个“伪目标”。
    总结:

    • 显式规则
    • 隐式规则
    • 变量定义
    • 引用文件
    • 注释
      makefile中只有行注释,注释以#开头。
    世事茫茫,光阴何其有限!
  • 相关阅读:
    【机器学习】浅谈协方差
    python {}.format
    【机器学习】准确率、精确率、召回率
    【声纹识别】 EER
    【机器学习】 最形象的入门
    逻辑卷-LVM
    RAID及软RAID的实现
    输入数字or 字符串,统计重复次数---字典统计练习
    Python-数据结构之dict(字典*****)
    POJ 3204 网络流的必须边
  • 原文地址:https://www.cnblogs.com/bobliao/p/10043083.html
Copyright © 2020-2023  润新知