【发布时间】:2015-11-13 12:18:33
【问题描述】:
假设我有数百个目标,其中一些对于构建成功并不重要(例如,我在 make 上使用 --keep-going 或在 ninja 上使用 -k 9000),我需要找出哪些 cmake 目标失败.
使用add_custom_command(),可以将构建后命令添加到 cmake 目标中,该目标会像这样打印其名称:
success: myTarget.dll
但是失败呢?
如果链接失败,那么我可以解析我正在使用的任何内容 (ninja/make/msbuild) 的详细输出,并查看哪个目标失败了。
但是,如果翻译单元的编译失败,我得到的唯一错误是特定的源文件没有编译,并且确定哪个 cmake 目标确切地失败了更难。
我唯一想到的是在构建失败后运行它:ninja -nv 这将进行详细的空运行,我可以拦截链接命令并解析以这种方式失败的 cmake 目标...
还有其他想法吗?
【问题讨论】:
-
您可能想看看我对Save and reprint warnings for successfully-compiled files on subsequent builds? 的回答。我认为您可以通过使用RULE_LAUNCH_COMPILE 提供构建脚本并捕获
stderr输出来实现您想要的。