如何使GCC警告转到stdout而不是stderr? 在我们的连续集成系统中,我们有一个用GCC构建的C++项目。 管道将输出到stderr视为表示生成失败。 看起来GCC会将所有警告和错误输出到stderr,因此任何警告输出都会导致构建“失败”

如何使GCC警告转到stdout而不是stderr? 在我们的连续集成系统中,我们有一个用GCC构建的C++项目。 管道将输出到stderr视为表示生成失败。 看起来GCC会将所有警告和错误输出到stderr,因此任何警告输出都会导致构建“失败”,gcc,azure-devops,continuous-integration,stderr,Gcc,Azure Devops,Continuous Integration,Stderr,有没有办法让GCC只向stderr输出实际错误而不输出警告?在命令之后添加2>&1,使其将stderr输出发送到stdout。管道将输出到stderr视为生成失败为什么?听起来很奇怪。如果编译失败,但是没有输出到stderr,会发生什么?我猜管道会认为编译阶段已经成功了-但是复制生成文件的后期阶段之一在找不到生成输出时会失败。你能显示你的管道吗?错误是否来自生成任务,或复制文件任务。如果是后期的复制文件任务失败,则应检查复制文件任务的配置。您能分享一段错误日志吗?管道或GCC构建本身没有任何问题

有没有办法让GCC只向stderr输出实际错误而不输出警告?

在命令之后添加
2>&1
,使其将stderr输出发送到stdout。

管道将输出到stderr视为生成失败
为什么?听起来很奇怪。如果编译失败,但是没有输出到stderr,会发生什么?我猜管道会认为编译阶段已经成功了-但是复制生成文件的后期阶段之一在找不到生成输出时会失败。你能显示你的管道吗?错误是否来自生成任务,或复制文件任务。如果是后期的复制文件任务失败,则应检查复制文件任务的配置。您能分享一段错误日志吗?管道或GCC构建本身没有任何问题。问题是,当我们打开Azure DeVoPS“ValuStDeDrr”选项时,会从我们的BASH脚本捕获GCC错误,这会用GCC编译C++源。由此产生的问题是GCC向STDRR输出警告-因此导致构建任务失败——当GCC输出实际错误而不是警告时,我们只希望任务失败。