OpenJDK:如何避免在修改jdk代码后进行完全重新编译?

3
在openjdk8源代码中,如果我修改了hotspot源代码的一些地方,然后使用make hotspot-only,它将进行增量编译。但是,当我修改jdk的源代码时,当我使用make jdk-only时,我会得到消息Compiling 9495 files for BUILD_JDK!只有在我添加一行代码就像System.out.println()时,才会获得完全编译。如何避免这种情况?

这与仅限于JDK还是C++一般有关? - Cargeh
只使用JDK!Hotspot具有增量编译功能,当我修改某些内容时,编译速度会非常快。 - wind2412
1个回答

1

当使用Make的.PHONY目标时,这种情况经常发生。

如果你的目标是一个.PHONY目标,或者引用了一个.PHONY目标,那么尝试找到一组规则,可以在不使用.PHONY目标的情况下产生相同的输出。

Makefile中的.PHONY目标会无条件地触发规则,这在你不想编写大量Makefile来触发构建所需部分时非常有用。虽然它们有其用途(特别是在make clean模式中),但它们经常执行比需要更多的工作,这就是你所发现的问题。

如果你在make处理过程中发现了一个.PHONY规则,并且无法避免它,那么你可能需要重新组织/重写Makefile来解决它。

从你的描述中,看起来hotspot-only是真正的目标,而jdk-only要么是一个.PHONY目标,要么引用了一个包含重建中的“所有内容”的.PHONY目标。这可能是设计上的问题或意外,但至少现在你知道为什么会重新构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接