Makefile QA

Table of Contents


Chapter 1

首先看下 Makefile 代码,这个 makefile 是我为 hadoop 写的:

build:
    @echo "building..."
    @hadoop com.sun.tools.javac.Main $(src).java
    @jar cf a.jar $(src)*.class
    @echo "build success"

clean:
    @-rm *.class
    @-rm *.jar
    @echo "deleted .class .jar files"
  1. 传递参数我们在上面的例子中可以看到 $(src) 这个用法,通过他我们就可以传递参数了:

    make build src=WordCount
    
  2. 命令失败后继续执行在 clean 中,我们看到了在 rm 命令之前,有一个 - 号,它就完成了这种功能。
  3. @command

    当我们想要输出一条命令的信息的时候,如果在 echo 前不加 @,当前的命令也会显示,例如:

    @git push origin master
    

    如果不加@,makefile 执行的时候,git push origin master 这行也会显示。

  4. Makefile : Clock skew detected 错误(link) 在 makefile 所在目录执行:

    find . -exec touch {} \;