Gradle компилятор выводит при построении кода C / C ++

Я строю C / C ++ код с Gradle под Linux (GCC) и Windows (VS10), как это описано в Создание документации по собственному программному обеспечению Gradle.

Процесс сборки в порядке, и я могу запустить свое приложение. Если во время сборки возникают ошибки, вы можете увидеть вывод компилятора как предупреждения и ошибки на консоли. Этот вывод дополнительно записывается в файл: build/tmp/"TaskName"/output.txt,
проблема является то, что этот вывод не отображается на консоли, если сборка выполняется без ошибок, тем не менее файл записывается.

Я ищу способ отображения выходных данных компилятора, таких как предупреждения или ошибки, на консоли, даже если сборка прошла успешно.

Можно запустить сборку Gradle с более высоким уровнем журнала: gradle build --info, но есть так много дополнительного вывода, что я делаю не хочу.

Я уже пробовал что-то вроде кода ниже в build.gradle файл для установки уровня журнала только для всех задач компиляции, но это не имеет значения, так как я бы начал сборку gradle только с: gradle build,

tasks.whenTaskAdded { task ->
if (task instanceof CCompile || task instanceof CppCompile) {
logging.setLevel(LogLevel.INFO)
}
}

Мой вопрос:

Есть ли способ получить ошибки / предупреждения компилятора на консоли без накладных расходов? Можно ли вообще установить LogLevel для некоторых задач? Если так, что не так с кодом выше?

Любая помощь будет оценена.

4

Решение

Я решил это сейчас, потому что уже существующий ответ Йохан Энгблом указал мне в правильном направлении. Вместо того, чтобы использовать cat outputfile.txt который зависит от платформы (Linux), я использую возможности gradle, чтобы он работал на Windows или Linux. Конечно, это решение не выводит вывод компилятора во время компиляции, но выводит его после завершения задания.

Чтобы добавить задачу после задачи компиляции и компоновки, я добавляю следующее (эта задача будет выполнена, если сборка не удалась или завершилась успешно).

tasks.withType(InstallExecutable) {
finalizedBy showCompilerOutput
}

Если вы просто хотите выполнить showCompilerOutput если сборка прошла успешно, вы можете использовать это:

build.finalizedBy showCompilerOutput

Задание showCompilerOutput для отображения вывода файлов, которые я упомянул в своем вопросе. Поэтому он создает дерево файлов, которое указывает на файлы, которые я упомянул: output.txt,

task showCompilerOutput {
dependsOn showCompilerOptions
doLast {
println '\n-----------------------------------------------------\n'
println 'Compiler output:'
FileTree tree = fileTree('build').include('**/output.txt')
// Iterate over the contents of a tree
tree.each {File file ->
println 'Content of file ' + file + ':\n'
println file.text
println '------\n'
}
}
}

Эта задача также зависит от другой задачи, которая называется showCompilerOptions, который делает то же самое, но для файлов с параметрами компилятора: options.txt,

task showCompilerOptions {
doLast {
println '\n-----------------------------------------------------\n'
println 'Compiler options:'
FileTree tree = fileTree('build').include('**/options.txt')
// Iterate over the contents of a tree
tree.each {File file ->
println 'Content of file ' + file + ':\n'
println file.text
println '------\n'
}
}
}
1

Другие решения

просто добавь cat outputfile.txt после того, как вы выполнили команду gradle

0