除了翻译单元编译失败之外,还报告目标失败

Report target failure in addition to translation unit compilation failure

假设我有数百个目标,其中一些对于构建成功并不重要(例如,我在 make 上使用 --keep-going 或在 ninja 上使用 -k 9000)并且我需要找出哪些 cmake 目标失败了。

使用 add_custom_command() 可以将 post-build 命令添加到打印其名称的 cmake 目标,如下所示:

success: myTarget.dll

但是失败呢?

如果 linking 失败,那么我可以解析我正在使用的任何内容的详细输出 (ninja/make/msbuild) 并查看哪个目标失败了。

但是,如果翻译单元的编译失败,我得到的唯一错误是特定的源文件没有编译,并且更难确定哪个 cmake 目标到底失败了。

我唯一想出的是 运行在构建失败后进行此操作:ninja -nv 这将使冗长的干涸 运行 我可以拦截 link 命令并解析以这种方式失败的 cmake 目标...

还有其他想法吗?

我最终使用了 make/ninja 的空运行并解析了它们的输出