Ich habe eine Kopfzeile, die zur Erstellungszeit in einer Aufgabe generiert wird, von der ich die Kompilieraufgabe abhängig mache, Problem ist, dass die Kompilierungsaufgabe nicht erkennt, wenn die Kopfzeile in der inkrementellen Kompilierung geändert wird. Selbst wenn die Aufgabe ausgeführt wird, wird die Quelldatei nicht kompiliert.Wie bekomme ich Gradle inkrementelle native C++ - Kompilierung für generierte Header?
Ich hätte erwartet, dass der generierte Header als "Discovered Include" angezeigt werden sollte und die Quelldateien neu erstellt werden, aber nicht so.
Unten ist das Beste, was ich habe, aber es funktioniert nicht.
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'
}
}
}
Beispielprojekt: https://github.com/thejk/gradle-incremental-cpp-generated-header