zoukankan      html  css  js  c++  java
  • Makefile 简易教程

    Makefile 就像是一个Shell脚本一样,通过批量处理,来完成自动化编译

    Makefile 基本规则

    目标:依赖
    (tab缩进)命令

    一、下面是最简单的makefile文件

    image

    修改一个文件,所有的文件都需要重新编译

    二、根据makefile的工作原理

    1. 自动检查依赖是否存在,不存在则向下搜索规重新编译或报错
    2. 存在则检查依赖是不是最新状态,不是则更新

    image

    但是此方法当依赖较多时比较麻烦

    三、引入变量

    普通变量

    直接使用=进行赋值,使用$(变量名)引用

    var=abc
    var2=$(var)
    

    自带变量

    CC = gcc #arm-linux-gcc
    CPPFLAGS : C预处理的选项 -I
    CFLAGS:   C编译器的选项 -Wall -g -c
    LDFLAGS :  链接器选项 -L  -l
    

    自动变量

    $@ 表示规则中的目标
    $< 表示规则中的第一个条件
    $^ 表示规则中所有条件
    

    同时可以使用%作为通配符直接代表目标名和依赖名,但需注意,%代表一个或多个同时目标和依赖名必须一致
    image

    makefile函数

    常用的两个

    1. wildcard – 查找指定目录下的指定类型的文件
    src=$(wildcard *.c)  //找到当前目录下所有后缀为.c的文件,赋值给src
    2. patsubst – 匹配替换
    obj=$(patsubst %.c,%.o, $(src)) //把src变量里所有后缀为.c的文件替换成.o
    

    image

    makefile的清理工作

    当程序编译完成后,文件夹中还存在很多编译过程中生成的预编译文件,最后一步就是清理这些文件
    image

  • 相关阅读:
    从一个线上服务器警告谈谈backlog
    聊聊服务器的负载
    Apache 配置说明
    Apache 服务器性能评估
    php之apc浅探
    Linux 服务器 监控命令
    小白学习mysql 之 innodb locks
    小白学习mysql之存储过程的优劣分析以及接入控制
    小白学习mysql之索引初步
    小白学习mysql之优化基础(EXPLAIN的连接类型)
  • 原文地址:https://www.cnblogs.com/cokefentas/p/14802242.html
Copyright © 2011-2022 走看看