0
我有一個頭文件是在構建時在編譯任務依賴的任務中生成的,問題在於編譯任務在增量編譯中更改頭文件時無法識別。所以即使任務運行,它也不會編譯源文件。如何獲得gradle incremental本機C++編譯來處理生成的頭文件?
我本來希望生成的頭文件應該顯示爲「發現的包含」,並導致源文件被重建,但並非如此。
下面是我想到的最好的,但它不起作用。
apply plugin: 'cpp'
model {
binaries {
all {
cppCompiler.args "-I$buildDir/gen"
}
}
components {
test(NativeExecutableSpec) {
sources {
cpp {
source {
srcDir "."
include "*.cpp"
}
}
}
}
}
}
task generateHeader(type: Copy) {
into "$buildDir/gen"
from(rootProject.file('template.h')) {
rename(/template/, 'generated')
expand([text: 'foo'])
}
}
tasks.all { task ->
def match = task.name =~ /^compile.*Cpp$/
if (match) {
task.dependsOn generateHeader
task.inputs.files project.fileTree(dir: "$buildDir/gen").matching {
include '*.h'
}
}
}
示例項目:https://github.com/thejk/gradle-incremental-cpp-generated-header