gnu make规则记录

1.

$(shell CMD)
  名称: 执行 shell 命令函数
  功能: 在新的 shell 中执行 CMD 命令
  返回值: CMD 在 shell 中执行的结果

例如:PLATFORM=$(shell $(ROOT)/systype.sh)在执行完下面的脚本后等价于PLATFORM=linux

case `uname -s` in
"FreeBSD")
    PLATFORM="freebsd"
    ;;
"Linux")
    PLATFORM="linux"
    ;;
"Darwin")
    PLATFORM="macos"
    ;;
"SunOS")
    PLATFORM="solaris"
    ;;
*)
    echo "Unknown platform" >&2
    exit 1
esac
echo $PLATFORM
exit 0

2. “include”指示符告诉 make 暂停读取当前的 Makefile,而转去读取“include”指定的一个或者多个文件,完成以后再继续当前 Makefile 的读取。Makefile 中指示符“include”书写在独立的一行,其形式如下:      include FILENAMES...

我们可使用“-include”来代替“include”,忽略由于包含文件不存在或者无法创建时的错误。“-”的意思是告诉 make,忽略此操作的错误,make 继续执行。

为了和其它的 make 程序进行兼容。也可以使用“sinclude”来代替“-include”。(GNU 所支持的方式)   。

3.自动化变量$?代表依赖文件列表中被改变过的所有文件。
自动化变量$^代表所有通过目录搜索得到的依赖文件的完整路径名(目录 + 一般文件名)列表。
自动化变量$@代表规则的目标。
自动化变量$<代表规则中通过目录搜索得到的依赖文件列表的第一个依赖文件。

原文地址:https://www.cnblogs.com/yangjiguang/p/6848124.html