我在玩makefile,遇到了%.o或%.c。据我了解,它指定了所有c或o文件。但为什么这项工作:
%.o: %.c
$(CC) -c $^ -o $@
Run Code Online (Sandbox Code Playgroud)
这不起作用
SOURCE := $(wildcard *.c)
$(SOURCE:.c=.o): SOURCE
$(CC) -c $^ -o $@
Run Code Online (Sandbox Code Playgroud)
这两个表达式都指定了所有文件。那么%.o: make 文件中的符号有什么作用呢?
Ste*_*uch 18
构造:
%.o: %.c
$(CC) -c $^ -o $@
Run Code Online (Sandbox Code Playgroud)
是一种模式规则,它是一种隐式规则。它指定一个目标和一个依赖项,并$(CC)为每个目标调用一次。虽然这个:
SOURCE := $(wildcard *.c)
$(SOURCE:.c=.o): SOURCE
$(CC) -c $^ -o $@
Run Code Online (Sandbox Code Playgroud)
是一个标准规则,但它(可能)有许多目标和许多依赖项。然而,对于所有这些,它只会调用$(CC)一次。
这两个表达式都指定了所有文件。
不,第一条规则告诉make如何在.o给定相应.c文件的情况下获取文件。注意单数:单个文件。
第二条规则(声称)告诉make如何获取一堆.o文件,给定另一堆相应的.c文件。注意复数:所有.c由*.c通配符产生的文件。
附带说明一下,%.o: %c是 GNU 扩展。
另一方面,您不会学习如何make在 StackOverflow上使用。你应该考虑读一本书。
| 归档时间: |
|
| 查看次数: |
28034 次 |
| 最近记录: |