zoukankan      html  css  js  c++  java
  • Makefile的补充学习

       通配符%和Makefile自动推导(规则)
    (1)%是Makefile中的通配符,代表一个或几个字母。也就是说%.o就代表所有以.o为结尾的文件。
    (2)所谓自动推导其实就是Makefile的规则。当Makefile需要某一个目标时,他会把这个目标去套规则说明,一旦套上了某个规则说明,则Makefile会试图寻找这个规则中的依赖,如果能找到则会执行这个规则用依赖生成目标。

    Makfile中引用其他Makefile(include指令)
    (1)有时候Makefile总体比较复杂,因此分成好几个Makefile来写。然后在主Makefile中引用其他的,用include指令来引用。引用的效果也是原地展开,和C语言中的头文件包含非常相似。

    命令前面的@用来静默执行
    (1)在makefile的命令行中前面的@表示静默执行。
    (2)Makefile中默认情况下在执行一行命令前会先把这行命令给打印出来,然后再执行这行命令。
    (3)如果你不想看到命令本身,只想看到命令执行就静默执行即可。

    Makefile中几种变量赋值运算符

    (1)= 最简单的赋值。但是用的时候非常注意,如果变量后面还有从新赋值,那么解析的时候是最后一次赋值为准。


    (2):= 一般也是赋值
    以上这两个大部分情况下效果是一样的,但是有时候不一样。
    用=赋值的变量,在被解析时他的值取决于最后一次赋值时的值,所以你看变量引用的值时不能只往前面看,还要往后面看。
    用:=来赋值的,则是就地直接解析,只用往前看即可。

    (3)?= 如果变量前面并没有赋值过则执行这条赋值,如果前面已经赋值过了则本行被忽略。(实验可以看出:所谓的没有赋值过其实就是这个变量没有被定义过,例 var=" ", var= ,都)
    (4)+= 用来给一个已经赋值的变量接续赋值,意思就是把这次的值加到原来的值的后面,有点类似于strcat。(在shell makefile等文件中,可以认为所有变量都是字符串,+=就相当于给字符串stcat接续内容)(注意一个细节,+=续接的内容和原来的内容之间会自动加一个空格隔开

  • 相关阅读:
    Educational Codeforces Round 81 (Rated for Div. 2)(训练)
    Prime Path(POJ) 3126
    前端知识(一)04 Vue.js入门-谷粒学院
    前端知识(一)03 初识 ECMAScript 6-谷粒学院
    前端知识(一)02 初识 Node.js-谷粒学院
    前端知识(一)01 前端开发和前端开发工具-谷粒学院
    同步和异步、阻塞和非阻塞
    给HTML页面设置自己的icon
    解决MyBatis-Plus 3.3.1中自动生成代码tinyint(1)无法自动转换为Boolean 的办法
    驼峰命名和短横线命名的转换
  • 原文地址:https://www.cnblogs.com/yygsj/p/5204368.html
Copyright © 2011-2022 走看看