【发布时间】:2021-01-15 09:39:49
【问题描述】:
我将文件 bar.c 和 foo.c 放在同一个文件夹中。
我有以下生成文件:
foo: foo.c
gcc -o foo foo.c
all: clean foo bar
bar: bar.c
gcc -o bar bar.c
clean:
rm -rf bar foo
输出只有foo,问题是为什么? foo 和 bar 有什么区别?
【问题讨论】:
-
你只是在运行
make吗?默认目标(第一个)是foo,它只会产生一个文件。试试make all或make foo bar。或将all移至文件顶部。 -
(OT: 将
clean作为all的先决条件是非常规的。make 的主要特点之一是它不会运行如果结果不需要运行的东西将是相同的。总是在编译之前清理失败。) -
@Biffen 是的,我只运行“make”——默认目标是否始终是 makefile 中的第一个目标?
-
是的。
all不是一个神奇的名字,只是一个约定。 -
@Biffen 好的,我想我明白了,非常感谢!