我来自多年的make经验。让我感到困惑的一件事是在Gradle中使用了任务依赖性而不是文件依赖性。例如,如果我的C程序具有以下依赖性(makefile格式):
app:file1.o file2.o
file1.o:file1.c file1.h file2.h
file2.o:file2.c file2.h
因此,两个目标文件都依赖于file2.h,并且如果file2.h发生更改,则将重建它们。但是,如果file1.h更改了,则只会构建file1.o。
我该如何在Gradle中表示这一点?我主要对如何使用原始Gradle(而不是使用插件)进行处理感兴趣。
谢谢!
布雷克·麦克布莱德
答案 0 :(得分:0)
答案与Gradle的增量构建支持有关。它记录在https://blog.gradle.org/introducing-incremental-build-support和https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:up_to_date_checks
基本上,对于内置任务,Gradle在内部计算与任务关联的输入和输出文件。然后,它使用此信息来避免执行不必要的任务,从而消除了不必要的步骤。对于自定义任务,Gradle在上面的链接中记录了一种方法,用于告诉Gradle特定任务的输入和输出文件是什么。