У меня есть мультипроектная сборка C ++ Gradle, которая производит несколько библиотек и исполняемых файлов. Я пытаюсь получить исполняемые (но не библиотеки) подпроекты для компиляции с помощью объекта «отпечаток». Это прекрасно работает, если я добавлю что-то подобное в отдельные подпроекты 'build.gradle
:
compileMain.doFirst {
// code to generate a 'BuildInfo.cpp' from from a template.
// embeds name of executable in so has to be generated anew for each exe
}
Следуя принципам СУХОГО, я бы предпочел сделать это раз и навсегда на верхнем уровне build.gradle
. Это моя попытка применить его только к подпроектам, которые используют плагин cpp-exe
, следуя этим инструкциям :
configure(subprojects.findAll { it.plugins.hasPlugin('cpp-exe') }) {
compileMain.doFirst {
// same code as above
}
}
Увы, это не срабатывает. Однако, если я помещу что-то вроде этого в менее строгий блок configure
, это показывает, что идея запроса плагина должна работать:
configure(subprojects.findAll { true }) {
task mydebug << {
if ( project.plugins.hasPlugin( 'cpp-exe' ) ) {
println ">>> $project.name has it!"
}
}
}
Может ли быть так, что плагины не применяются к подпроектам во время оценки закрытия configure
(на верхнем уровне build.gradle
)? Может быть, есть гораздо более простой способ достичь этого вообще?