Makefile 在“全部生成”中,首先生成哪个目标

Makefile 在“全部生成”中,首先生成哪个目标,makefile,Makefile,我有一个问题是关于做所有的命令 示例生成文件: .PHONY: all clean all: kaldi.done python check_install 当我做了所有的, 三项中哪一项先完成?make不强制执行命令。如果所有先决条件都需要完成,则通常会按照列出的顺序完成。但是如果您有一个并行的make(使用-j选项),则无法保证它们将以何种顺序完成。。。。假设所讨论的目标中没有一个被指定为其他任何目标的先决条件。如果构建顺序很重要,那么这就是您应该如何表达您的约束。请注意,如果没有启用并

我有一个问题是关于做所有的命令

示例生成文件:

.PHONY: all clean

all: kaldi.done python check_install
当我做了所有的,
三项中哪一项先完成?

make
不强制执行命令。如果所有先决条件都需要完成,则通常会按照列出的顺序完成。但是如果您有一个并行的
make
(使用
-j
选项),则无法保证它们将以何种顺序完成。。。。假设所讨论的目标中没有一个被指定为其他任何目标的先决条件。如果构建顺序很重要,那么这就是您应该如何表达您的约束。请注意,如果没有启用并行性(
-j
),则先决条件将按照它们作为目标先决条件列出的顺序构建:这是POSIX所要求的,并且所有实现都以这种方式运行。使用
-j
(这是GNU特定的非POSIX特性,因此一旦使用它,就不再受POSIX规则的约束),GNU make仍将以相同的顺序启动先决条件,但由于先决条件的完成时间不确定,您无法知道哪些配方将并行运行,哪些不会并行运行。一般来说,依赖先决条件列表中目标出现的顺序来确保配方的运行顺序被认为是不好的调用。如果您有一个要求,目标a的配方必须在目标B的配方启动之前完全运行,那么您应该通过添加一个先决条件关系(如
B:a