一些编译器允许您将警告设置为错误,这样您就永远不会留下任何编译器警告,因为如果您这样做,代码将无法构建。这是一件好事。
不幸的是,一些编译器没有警告作为错误的标志。
我需要编写一个提供该功能的 shell 脚本或包装器。
大概它解析编译控制台输出并在有任何编译器警告(或错误)时返回失败,否则返回成功。“失败”也意味着(我认为)不应该产生目标代码。
什么是您可以编写的最短、最简单的 UNIX/Linux shell 脚本,它满足上述显式要求,以及以下隐含要求,否则其行为就像编译器一样: - 接受所有标志、选项、参数 - 支持 stdout 和 stderr 的重定向- 按照指示生成目标代码和链接
关键词:优雅,满足所有要求。
额外的功劳:易于合并到 GNU make 文件中。
谢谢你的帮助。
===线索===这个解决不同问题的方法,使用shell函数(?),将文本附加到 bash 中的stderr重定向,可能会出现。想知道如何邀请litb的朋友“非常了解 bash”来解决我的问题?
===回答状态===
感谢查理马丁的简短回答,但不幸的是,这就是我开始的。不久前,我使用它,将其发布以供办公室使用,并在几个小时内向我指出了它最严重的缺点:它将通过编译而没有警告,但只有错误。这真的很糟糕,因为那时我们正在交付编译器肯定不会工作的目标代码。简单的解决方案也不满足列出的其他要求。
感谢Adam Rosenfield的速记,以及Chris Dodd将 pipefail 引入解决方案。Chris 的回答看起来最接近,因为我认为 pipefail 应该确保如果编译实际上因错误而失败,我们将得到应有的失败。克里斯,管道故障是否适用于所有外壳?对上面列出的其他隐含要求有什么想法吗?