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

jav*_*vey 5 c c++ clang ninja

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

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

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

更新:回顾过去,我最初的问题是在错误的工具中寻求解决方案。我没有将标志传递给 Clang,而是需要将标志传递给我的 make 工具 Ninja。

A. *_* K. 7

来自ninja --help

-k N     keep going until N jobs fail [default=1]
Run Code Online (Sandbox Code Playgroud)

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

ninja -k 100
Run Code Online (Sandbox Code Playgroud)

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

  • ```ninja -k 0``` 禁用最大作业失败计数 (9认同)