zoukankan      html  css  js  c++  java
  • makefile 的一些常识

    $? :比目标的修改时间更晚的那些依赖模块表。
    $@ :当前目标的全路径名。可用于用户定义的目标名的相关行中。
    $< :比给定的目标文件时间标记更新的依赖文件名。
    $* :去掉后缀的当前目标名。例如,若当前目标是pro.o,则$*表示pro。

    make默认寻找叫makefile或Makefile的文件,自己指定的话用 make -f 文件名

    "#": 注释符

    命令行首的"@":取消本行命令回显

     

    1.规则的基本格式:

    目标:依赖

    [tab]命令       <---------- 命令开头要一个[tab]键

    例0:

    hello:main.o func1.o func2.o 

        gcc main.o func1.o func2.o  -o hello

    上面这两行叫一个规则

     

    2.伪目标(phony taeget): 没有任何依赖,只有执行动作的目标

    用".PHONY"显式指明伪目标

    .PHONY: clean

    clean:

        rm -f *.o

    可以使用这一特性实现rebuild all

     

    3.变量:   (便于修改)

    obj=main.o func1.o func2.o 

    hello:$(obj)

        gcc $(obj) -o hello

    系统默认变量:

    $^    代表所有依赖文件

    $@  代表目标

    $<    代表第一个依赖文件

    例0改写如下:

    hello:main.o func1.o func2.o
        gcc $^ -o $@

    4.模式规则

    用"%"做通配符

    "s%.c"表示所有以s开头,以.c结尾的文件

    :

    %.o: %.c

        commands

    本例指出了如何所有.c生成相应.o的规则

    如果模式规则后不屑任何命令,就取消了这一模式规则的定义

  • 相关阅读:
    洛谷P1272 重建道路
    uva 10004
    uva10305
    uva 10044
    uva 120
    uva699
    uva297
    uva11111
    uva 101
    uva10152 ShellSort
  • 原文地址:https://www.cnblogs.com/harveyaot/p/3195363.html
Copyright © 2011-2022 走看看