特殊变量:

在Makefile中,有两个变量特殊变量会经常用到:MAKE和MAKECMDGOALS。MAKE变量表示的是当前处理Makefile的命令名是什么。当需要在Makefile中运行另一个Makefile时,需要用到这个变量。

 .PHONY: all
all:
@echo "MAKE = $(MAKE)"

MAKECMDGOALS变量表示的是当前构建的目标名。

 .PHONY: all clean
all clean:
@echo "\$$@ = $@"
@echo "MAKECMDGOALS =$(MAKECMDGOALS)"

从测试结果来看,MAKECMDGOALS变量指的是用户输入的目标,当只运行make命令且不带参数时,虽然根据Makefile的语法规则,Makefile中的第一个目标即为默认目标,即all目标,但MAKECMDGOALS在这里例外,MAKECMDGOALS此时是空而不是all目标,这一点需要注意。

运行make时可以同时指定多个目标。make在获得了多个目标后,将以从左到右的顺序逐个地构建目标。

/*2017.5.6*/

CURDIR:是make的内嵌变量,指当前目录。

echo $(CURDIR)可以测试makefile的当前目录。

Makefile学习之路——3的更多相关文章

  1. Makefile学习之路——4

    变量的类别有递归扩展变量和简单扩展变量.只用一个“=”符号定义的变量被称为递归扩展变量.通过下面例子观察递归扩展变量的特点. .PHONY: all foo=$(bar) bar=$(ugh) ugh ...

  2. Makefile学习之路——2

    让你的makefile更专业. 在上一个Makefile所在目录下通过touch命令创建一个clean文件,执行make clean,将发现make总是提示clean文件是最新的,而不是按我们期望的那 ...

  3. Makefile学习之路——1

    编写makefile,不是一个猛子扎进去试着写一个规则并对之调试,而应该先采用面向依赖关系的思考方法勾勒出makefile要表达怎样的依赖关系,这一点尤为重要.通过不断地练习这种思考方法,才可能达到流 ...

  4. Makefile学习之路6——让编译环境更加有序

    在大多项目中都会合理设计目录结构来提高维护性,在编译一个项目时会产生大量中间文件,如果中间文件直接和源文件放在一起,就显得杂乱而不利于维护.在为现在这个complicated项目编写makefile之 ...

  5. Makefile学习之路5——通过函数增强功能

    通过函数能显著增强Makefile的功能.对于simple项目的Makefile,尽管使用了模式规则,但还是有一件比较麻烦的事情,就是要在Makefile中指明每一个项目源文件.下面介绍几个后期会使用 ...

  6. 运用Autoconf和Automake生成Makefile的学习之路

    作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的M ...

  7. Qt 学习之路 2(7):MainWindow 简介

    Qt 学习之路 2(7):MainWindow 简介  豆子  2012年8月29日  Qt 学习之路 2  29条评论 前面一篇大致介绍了 Qt 各个模块的相关内容,目的是对 Qt 框架有一个高屋建 ...

  8. Qt 学习之路 2(3):Hello, world!

     豆子  2012年8月22日  Qt 学习之路 2  107条评论 想要学习 Qt 开发,首先要搭建 Qt 开发环境.好在现在搭建 Qt 开发环境还是比较简单的.我们可以到 Qt 官方网站找到最新版 ...

  9. jQuery学习之路(1)-选择器

    ▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...

随机推荐

  1. exception 值太大

      CreateTime--2018年2月5日09:45:01 Author:Marydon 异常: Cause: java.sql.SQLException: ORA-12899: 列 " ...

  2. JAVA遍历Map的方法

    import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TestMap { pu ...

  3. HDUOJ----湫湫系列故事——减肥记I

    湫湫系列故事——减肥记I Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  4. iOS - App 应用

    1.Xcode 项目属性 Product Name 软件名称.产品名称.项目名称 Organization Name 公司名称.组织名称 Organization Identifier 公司的唯一标识 ...

  5. 【php】基础学习1

    其中包括php基础.字符串和正则表达式的学习.具体如下: <html xmlns=http://www.w3.org/1999/xhtml> <head> <meta h ...

  6. Flume多Sink方案修正

    在实际项目中采用http://www.cnblogs.com/moonandstar08/p/6091384.html方案进行布署时,由于系统产生的消费比较大按照原方案进行布署时,随着国外局点不断增加 ...

  7. Android清空Fragment回退栈

    啊= =:国内的资料为什么都是抄来抄去的. 最后上了Stack Overflow才找到了正解. FragmentManager fragmentManager = getFragmentManager ...

  8. BIP_BI Pubisher的基本语法(概念)

    2014-05-31 Created By BaoXinjian

  9. ios学习之旅--oc对象的关系

    1.匿名对象:就是没有名字对象     1.匿名对象仅用一次     使用场景:     1.当我们仅仅要调用一个对象的某个方法一次的时候能够使用匿名对象 2.匿名对象能够作为函数的实际參数 #imp ...

  10. [转]Ubuntu上安装TL-WN725N 2.0无线网卡驱动

    笔者使用的Ubuntu操作系统是13.04版本的,这个版本下,笔者使用朋友的TL-WN725N 1.0版本的无线网卡,直接插上就可以使用.正是由于这个方便性,不用去折腾什么驱动,所以笔者从京东上买了一 ...