在openjdk8源代码中,如果我修改了热点源代码的某些位置,然后使用make hotspot-only,它将进行增量编译。但是,当我修改了jdk的源代码后,当我使用make jdk-only时,我收到消息Compiling 9495 files for BUILD_JDK!当我仅添加一个行代码(如System.out.println())时,我只会得到完整的编译。如何避免呢?

最佳答案

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

如果您的目标是.PHONY目标,或引用了.PHONY目标,则
尝试找到一组产生相同输出而不使用.PHONY目标的规则。

maket规则中的.PHONY目标是无条件的,当您真的不想编写很多Makefile来仅触发构建的必需部分时,这很有用。尽管它们有其用途(尤其是在make clean模式中),但它们经常执行比所需更多的工作,这是您已经确定的问题。

如果在制作过程中发现.PHONY规则,但无法避免,则可能需要重组/重写Makefile来修复它。

从您的描述中,听起来hotspot-only是真正的目标,而jdk-only.PHONY目标或引用了在重建中包括“所有内容”的.PHONY目标。那可能是出于设计或偶然原因,但至少现在您知道了为什么进行重建。

关于java - openjdk:修改jdk的代码后,如何避免完全重新编译jdk?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50275406/

10-10 14:51