我有一个使用 glslangValidator 将 glsl 编译为 SPIR-V 的规则。
FileTagger {
patterns: [
"*.vert",
"*.tesc",
"*.tese",
"*.geom",
"*.frag",
"*.comp"
]
fileTags: ["glsl"]
}
Rule {
inputs: ["glsl"]
Artifact {
filePath: input.fileName + ".spv"
fileTags: ["spv"]
}
prepare: {
var cmd = new Command("glslangValidator", ["-o", output.filePath, "-V", input.filePath]);
cmd.description = "compiling " + input.fileName;
cmd.highlight = "compiler";
return [cmd];
}
}
这在输入文件有效时效果很好,但是当出现错误时,glslangValidator 将错误打印到 STDOUT 而不是 STDERR 并返回非零值。由于返回值,构建失败(因为它应该),但是 Qt Creator 中的问题窗格没有检测到文件和行号等,因为它们打印到 STDOUT 而不是 STDERR。
我厌倦了使用 stderrFilterFunction 和 stdoutFilterFunction 但我似乎找不到在它们之间传递信息的方法。
有什么方法可以让 Qt Creator 检测到 glslangValidator 报告的问题?