在openjdk8源代码中,如果我修改了某些热点源代码的位置,然后我使用make hotspot-only
,它将进行增量编译。但在我修改jdk的源代码后,当我使用make jdk-only
时,我收到了消息Compiling 9495 files for BUILD_JDK
!当我只添加一个行代码时,我只会获得完全编译,就像System.out.println()
一样。如何避免?
答案 0 :(得分:1)
使用Make的.PHONY
目标时会更频繁地发生这种情况。
如果您的目标是.PHONY
目标,或引用.PHONY
目标,那么
尝试找到一组不使用.PHONY
目标而产生相同输出的规则。
.PHONY
无条件地制定触发器规则的目标,当您真的不想编写大量Makefile
来触发构建的必需部分时,这非常有用。虽然它们有用途(特别是在make clean
模式中),但它们通常执行的工作量超出需要的范围,这是您已经确定的问题。
如果您在make处理中找到.PHONY
规则,并且无法避免,则可能需要重新构建/重写Makefile以进行修复。
根据您的描述,听起来hotspot-only
是真正的目标,而jdk-only
要么是.PHONY
目标,要么引用包含“所有内容”的.PHONY
目标重建。这可能是设计或意外,但至少现在你知道为什么重建会发生。