在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/