zoukankan      html  css  js  c++  java
  • Makefile的编写及四个特殊符号的意义@、$@、$^、$

    https://www.cnblogs.com/sky-heaven/p/9450435.html

    Makefile一般的格式是:

                                         target:components 

                                                   rule

    一、@

    这个符串通常用在“规则”行中,表示不显示命令本身,而只显示它的结果,例如Makefile中的内容为:

    DIR_OBJ=./obj
    CMD_MKOBJDIR=if [ -d ${DIR_OBJ} ]; then exit 0; else mkdir ${DIR_OBJ}; fi

    mkobjdir:
    @${CMD_MKOBJDIR}
    命令行执行如下:
    make mkobjdir
    此时不会显示在命令行不会显示出if [ -d ${DIR_OBJ} ]; then exit 0; else mkdir ${DIR_OBJ}; fi,但如果规则行的TAB后没有以@开头,则会显示,不信可以试试。

    二、$@、$^、$<

    这三个分别表示:

    $@          --代表目标文件(target)

    $^            --代表所有的依赖文件(components)

    $<           --代表第一个依赖文件(components中最左边的那个)。

    $?           --代表示比目标还要新的依赖文件列表。以空格分隔。

    $%           --仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是"foo.a"。如果目标不是函数库文件(Unix下是[.a],Windows下是[.lib]),那么,其值为空。

    ' - ' 符号的使用
         
         通常删除,创建文件如果碰到文件不存在或者已经创建,那么希望忽略掉这个错误,继续执行,就可以在命令前面添加 -,
         -rm dir;
         -mkdir aaadir;
     
    ' $ '符号的使用
              美元符号$,主要扩展打开makefile中定义的变量
     
    ' $$ '符号的使用
              $$ 符号主要扩展打开makefile中定义的shell变量
     
    例如:
         @for dir in $(subdirs); do

              @echo -------compiling $$dir-----------;
              $(MAKE) -C

         done

    以上subdir属于makefile中定义的变量,用$
           dir则属于makefile中定义的shell变量,所有使用是使用 ‘ $$ ’ 而不是 ' $ '
     
     
  • 相关阅读:
    Ajax学习感悟
    C#自定义控件designmodel的判断
    Asp.net+Flash多文件上传
    .net下帮助文件(sandcastle)
    水晶报表小例用于学习
    WinAPI转C#利器
    利用HttpHandler和Cache统计点击量
    关于C#调用API的理解(汇多考勤机HD4K)
    ubuntu 12.04 配置PHP開發環境遇到的問題
    windows 7 系統在VMWear workstation 9上安裝Mac OS X 10.7
  • 原文地址:https://www.cnblogs.com/lelin/p/11152780.html
Copyright © 2011-2022 走看看