【发布时间】:2016-12-19 23:41:19
【问题描述】:
我目前正在使用 GNU Make 3.81 --jobs=1,但正在尝试迁移到 GNU Make 4.2.1 --jobs=X,即多线程。
makefile、环境等一切其他都是一样的。
问题
.objs 或任何工件是否可能不同?
更新
假设 makefile 在逻辑上是正确的,这意味着所有依赖项都正确且彻底地指定,即它们是“并行正确的”
【问题讨论】:
-
是的。使用不同版本的
make可能是一个原因。并行make是另一个潜在原因,如果您的依赖关系没有详尽描述。示例:foo.c首先从foo.l生成,然后编译,生成foo.o。但是你忘了告诉makefoo.c有foo.l作为先决条件。可能是,如果foo.l发生变化,它(偶然)与--jobs=1一起工作,但现在,与--jobs=2,foo.c在更新之前编译。 -
@RenaudPacalet 是的,很好!但是,如果仅更改
make的版本会产生影响,我会尝试隔离。所以我更新了这个问题。
标签: windows multithreading makefile gnu-make