zoukankan      html  css  js  c++  java
  • Makefile常用知识点

    格式

    • 目标:最终要去生成的文件, 定格写,后面是冒号(冒号后面是依赖)
    • 依赖:用来生成目标的源材料
    • 命令:加工的方法,命令前面一定是Tab, make的过程就是使用命令将依赖加工成目标的过程

    工作原理

    1. 当我们执行make xx时,Makefile会自动执行xx这个目标下面的命令语句
    2. 当我们make xx时,是否执行是取决于依赖的,依赖如果成立就会执行命令,否则不执行
    3. 直接执行make与执行make 第一个目标的效果是一样的(第一个目标其实就是默认目标)

    命令前缀

    符号 含义
    回显命令和结果, 出错时中断
    - 回显命令和结果, 出错时继续执行
    @ 不回显命令, 仅显示结果, 出错时中断

    通配符%和自动推导

    • %代表一个或几个字符,例如%.o就代表所有以.o为结尾的文件。
    • 当Makefile需要一个文件时,他会将这个目标去按规则套用,一旦套用上某个规则说明,则Makefile会试图寻找这个规则中的依赖,如果能找到则会执行这个规则用依赖生成目标。

    自动变量

    • $@ 规则的目标文件名
    • $< 规则的依赖文件名
    • $^ 依赖的文件集合

    定义和使用变量

    无变量类型,直接定义使用。$变量名使用

    • = 赋值语句中变量在被解析时,取决于变量最后一次赋值的值
    • := 赋值语句中变量在被解析时,取决于变量最近一次赋值的值
    • ?= 前面没有赋值(定义)过时才赋值
    • += 给一个已经赋值的变量继续赋值,续接的内容和原来的内容会以空格隔开

    环境变量

    • 使用export导出的就是环境变量,一般使用大写,普通量使用小写. 环境变量回影响到其它Makefile文件,需谨慎使用. 环境变量在整个工程的Makefile中可以共享,普通变量只是当前本Makefile可用.

    特殊符号

    • @静默执行 不输出命令本身,仅输出命令本身
  • 相关阅读:
    canvas,画个纸飞机
    时钟
    去除滚动条,内容仍然可以滚动
    鼠标指针移入移出改变图片透明度
    Mysql数据库优化总结
    一次利用nginx漏洞的木马事件
    一个批量删除大表数据的shell小脚本
    MegaCli监控raid卡磁盘信息以及相关的shell脚本
    MYSQL delete语句不支持别名?
    一次Mysql数据库服务器磁盘空间满引发的写入和同步问题
  • 原文地址:https://www.cnblogs.com/haoxi/p/6156258.html
Copyright © 2011-2022 走看看