繁体   English   中英

使用 Clang/Ninja 产生所有可能的错误

[英]Produce all possible errors with Clang/Ninja

我正在编译一个相当大的库,其中包含许多需要引入的外部依赖项。每次尝试编译时,我都会收到一个关于缺少 header 文件的新错误。 然后我必须 go 并追踪在哪里可以找到该标题/库并将其添加到项目包括。 这个编译-然后-查找-header/source的过程是重复的,需要很多时间。

我希望编译器继续尝试在一个错误列表中构建 output 所有缺少的标头。 使用 Clang 是否可能,如果可以,我该如何控制它? 在相关说明中,一旦我拥有所有标题,是否可以告诉 Clang 报告所有 linker 错误/未定义的引用,所以我不必对源文件重复此过程?

我正在寻找编译器标志来打印所有可能的错误(缺少标题)和所有未定义的引用。 换句话说,我希望编译继续通过第一个有错误的文件并尝试编译项目中的所有文件。 编译器是 Clang (C/C++) 版本 8.0.2。 制作工具是忍者(1.5.3)。 使用 CMake (3.6.4) 生成生成文件。

更新:回首往事,我最初的问题是在错误的工具中寻求解决方案。 我不需要将标志传递给 Clang,而是需要将标志传递给我的制作工具 Ninja。

来自ninja --help

-k N     keep going until N jobs fail [default=1]

所以我会运行 ninja 命令,例如:

ninja -k 100

继续,直到发现 100 个错误或构建成功。 需要注意的一件事是,如果需要错误文件来继续构建过程,则某些错误可能会停止整个构建。

您的问题的解决方案:不要编写 header 文件。 让电脑替你做。 写 SQLITE 和 FOSSIL 的 HIPP 博士写了一个名为 makeheaders http://www.hwaci.com/sw/mkhdr/的实用程序,它工作得很好,让你更有效率,我一直在使用它。 一个小的 bash 为你做这一切:

for i in *.c 
do
echo "header for $i"
makeheaders $i

如果你的文件是:main.c,你只需要一个顶行#include“main.h”。 我不明白为什么人们不使用它。 HIPP是个天才。 使其成为构建过程的一部分,并在每次编译时生成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM