【发布时间】:2020-04-30 15:09:43
【问题描述】:
我正在学习 Makefile 并尝试实现并行性。我知道“-j”选项。但是,例如具有以下生成文件(在 Windows 上)-
all: a b c d
a:
# some build rule
b:
# some build rule with parallelism
c:
# some build rule
d:
#some build rule
我正在尝试运行make all,只有目标“b”并行运行。使用“b”的构建规则传递 -j 选项不起作用。任何指针?
【问题讨论】:
-
我假设您使用的是 GNU make,因为它提供了
-j选项(这不是 POSIX 对 make 定义的一部分)。除了先决条件之外,GNU make 无法控制允许并行运行的作业。因此,如果您不希望a和c并行运行,您必须声明一个依赖关系,例如a: c。如果您不希望重新构建c来强制重新构建a,则可以查看仅订单规则。
标签: makefile parallel-processing dependencies target