一、MAKE中的自动变量:
    $@: 表示target的名字
    $%: 仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是 "foo.a"。
    $<: 表示第一个依赖条件的名字
    $?: 表示所有比target更新的依赖条件的名字列表
    $^: 表示所有依赖条件的名字,同时去除依赖列表中重复的条件
    $+: 同$^的功能基本相同,但是他并不去除依赖列表中的重复条件
    自动变量的另外一类扩展为,其中D为directory,F为File
    $(@D): 如果$@为/sbin/ifconfig 那么$(@D)为sbin
    $(@F): 如果$@为/sbin/ifconfig 那么$(@F)为ifconfig
    其他自动变量均依此类推.

二、虚拟路径:
    VPATH=variables (这里VPATH是内部变量)
    vpath pattern directory-list (这里vpath是内部指令)

表示make搜寻target和prerequisite的目录,但是命令部分不会利用虚拟目录,他可以包含一组以空格分开的目录列表。
    VPATH=include src
    vpath %.c src1 src2    (目录可以有多个,模式只能有一个)
    vpath %.h include

三、后缀规则:
    .SUFFIXES: .out .a .ln .o .c .cc .C .cpp .p .f .F .r .y .l 以上是后缀规则中的缺省内置规则。
    .SUFFIXES: .pdf .fo .html .xml,表示自定义的后缀规则。
    .SUFFIXES: 如果没有定义任何必要条件,则表示打算删除所有的缺省后缀规则。
    
    .o.cpp:
        g++ -I ./include -c $< -o $@
    等效于
    %.o: %.cpp
        g++ -I ./include -c $< -o $@

四、常用命令行选项:

make -n = --just-print         只是显示命令,但并不真正执行他们,方便用于调试
    make -f = --file                    可以灵性制定makefile的名字
    make -C = --directory          指出makefile的执行目录
    make -s = --silent               所有的命令都不显示
    make -i = --ignore-errors     忽略命令中失败的命令,仍然继续执行
    make -B = --always-make    认为所有的目标都需要更新(重编译)。
    make -e = --environment-overrides 指明环境变量的值覆盖makefile中定义的变量的值。
    make -h = --help
    make -I = --include-dir         指定一个被包含makefile的搜索目标。可以使用多个“-I”参数来指定多个目录
    make -r = --no-builtin-rule   禁止make使用任何隐含规则
    make -v = --version
    make -w = --print-directory  输出运行makefile之前和之后的信息。这个参数对于跟踪嵌套式调用make时很有用。
    make -o = --old-file             不重新生成的指定的<file>,即使这个目标的依赖文件新于它。

Makefile的常用技术总结的更多相关文章

  1. Android无线开发的几种常用技术(阿里巴巴资深工程师原创分享)

    完整的开发一个android移动App需要经过从分解需求.架构设计到开发调试.测试.上线发布等多个阶段,在发布后还会有产品功能上的迭代演进,此外还会面对性能.安全.无线网络质量等多方面的问题. 移动A ...

  2. React.js 常用技术要点

    最近在公司的一个移动端WEB产品中使用了React这个框架(并不是React-Native),记录一下在开发过程中遇到的各种问题以及对应的解决方法,希望能对读者有所帮助. React原则 React不 ...

  3. OC中另外的一个常用技术:通知(Notification)

    OC中另外的一个常用技术:通知(Nofitication)其实这里的通知和之前说到的KVO功能很想,也是用于监听操作的,但是和KVO不同的是,KVO只用来监听属性值的变化,这个发送监听的操作是系统控制 ...

  4. Struts 2 常用技术

    目录  Struts 2 常用技术  1. 常用类和接口  1.1 getter 和 setter 方法  1.2 Action 接口  1.3 ActionSupport 类  1.4 通过 Act ...

  5. 必知干货:Web前端应用十种常用技术你全都知道吗?

    Web前端应用十种常用技术,随着JS与XHTML的应用普及,越来越多的web界面应用技术出现在网站上,比如我们常见的日历控件,搜索下拉框等,这些web界面应用技术大大的丰富了网站的表现形式,本文将为您 ...

  6. 可伸缩性架构常用技术——之数据切分 Data Sharding/Partition

    1. 简介 本来想写一篇可伸缩性架构方面的文章,发现东西太多了,久久未能下笔,这里首先把大家最关注的数据切分(Partition/Sharding)方面的内容先写完,给大家参考. 我们知道,为了应对不 ...

  7. 介绍web开发中实现会话跟踪的常用技术方法

    由于http是无状态的协议,这种特性严重阻碍了客户端与服务器进行动态交互,例如购物车程序,客户在购物车中添加了商品,服务器如何知道购物车已有的物品呢?为了支持客户端与服务器之间的交互,为了弥补http ...

  8. 分布式锁1 Java常用技术方案

    前言:       由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题.所以自己结合实际工作中的一些经验和网上看到的一些资 ...

  9. makefile文件的技术

    [快速的学习笔记] gcc命令:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html#_Toc311642845 makef ...

随机推荐

  1. angular - 编辑html文件-4

    启动服务器: angular默认端口:4200 ng serve --port 3000 --open 输入本条命令后,会自动打开默认浏览器以及打开APP页 推荐开发工具webStorm,全平台兼容M ...

  2. sql server 2008出现远程过程调用失败

    sql server  2008出现远程过程调用失败解决方式有下面几种: 1.依照网上说的方法.是由于装了vs 2012或是vs2013或是vs2015等高版本号时.安装了Microsoft SQL ...

  3. 关于input:-webkit-autofill样式问题

    最近在整理项目的时候,遇到了一个chrome浏览器自动填充的样式问题, 用户名跟密码的input都设置为透明颜色,但是会变成黄色,打开chrome调试工具,发现有个input:-webkit-auto ...

  4. PHP魔术方法之__call与__callStatic方法

    <?php class human{ private function t(){ } //魔术方法__call /* $method 获得方法名 $arg 获得方法的参数集合 */ public ...

  5. datatables参数配置详解

    //@translator codepiano //@blog codepiano //@email codepiano.li@gmail.com //尝试着翻译了一下,难免有错误的地方,欢迎发邮件告 ...

  6. 搭建mongoDB 配置副本集 replSet

    mongodb的master_slave和ReplSet是很常见的两种构架: 下面记录下搭建mongodbReplSet 的过程: 首先,进入到一个指定目录下 >cd /opt 下载mongod ...

  7. 模式识别之分类器knn---c语言实现带训练数据---反余弦匹配

    邻近算法   KNN算法的决策过程 k-Nearest Neighbor algorithm是K最邻近结点算法(k-Nearest Neighbor algorithm)的缩写形式,是电子信息分类器算 ...

  8. EasyDarwin手机直播是如何实现的快速显示视频的方法

    前言 经常有人提到最近比较火的映客直播.花椒直播这种,是如何做到在打开手机直播中的某一个主播房间后,立即就能显示出主播视频,非常非常快,而且延时也比较小,是怎么做到的? 其实,这并不是什么高深的技术, ...

  9. windows下使用ofstream默认输出内存数据到文件中时,会自动将0A换成0A0D

    0A即\n,而0D是\r,windows下换行是\n\r,因此会自动转换. 但是,这样会带来很大的问题,导致由内存写入文件中的数据和内存中不一样,还不知道是什么原因造成的. 特别是将从网络接收来的pn ...

  10. thinkphp3.2独立分组的建立

    很简单,就是把默认的Home模块复制一份,放到Admin目录下,同时把namespace改成namespace Admin\Controller即可,配置项如下: