gpt4 book ai didi

c++ - 美化 clang -v 输出

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:28 27 4
gpt4 key购买 nike

有没有办法让 clang 输出插入回车符?当使用详细选项进行编译时,我只会得到这些巨大的不可读的编译器标志和路径转储。

最佳答案

使用 popen开始你的clang session 。创建一个新命令行为 clang -v (包括空格)并将您通常提供给 clang 的参数连接起来本身。在最后一个参数之后,添加 2>&1转换 Clang 的 stderr输出到常规 stdout所以popen可以捡起来。然后循环popen的输入并解析每一行,在您认为合适的地方添加额外信息。

例如,我使用

为我的本地 Clang 获取了整套标志
clang -cc1 --help

并将其作为单个长字符串合并到我的 C 程序中。然后我遍历了 popen 的返回结果, 扫描以 - 开头的标志,当找到一个时,我为此扫描了长标志字符串。如果它找到了什么,我将它写在一个单独的绿色行上(使用 ANSI 转义序列)。然后我测试标志字符串是否应该跟随一个参数——这些通常有一个前导 <...>指标。如果是这样,我用蓝色写出来。最后,我写出整个标志解释行,直到遇到行尾。

用我非常粗糙的程序称为 colorclang – 123 行实际代码 – 我得到这样的输出:

colorclang output

实际上,它会测试每个 输入行以查找可能的标志,因此存在一些错误着色。更精确的解析是可能的;我必须为以 "/usr/bin/clang" 开头的单行添加单独的例程(对于常见的 Clang 标志),以 "/usr/bin/ld" 开头的单行(并解析 loader 标志),可能还有每个 #include .. 之后的行声明。

Complete list of clang flags? 的帮助下拼凑而成, Steve Kemp 的 answerC: Run a System Command and Get Output? ,并在推导出 clang -v 之后写入 stderr , larsman's answerc popen won't catch stderr .

关于c++ - 美化 clang -v 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33576680/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com