2017-03-09 17 views
1

有没有办法使CMake退出非0退出代码响应警告“手动指定的变量未被项目使用”?如何使CMake退出非0以响应警告“手动指定的变量未被项目使用”?

enter image description here

我喜欢与视为错误警告最大和警告严谨的编程,但在这个CMake的警告,这要是在某些构建管道未捕获早期可引起令人惊讶的失败的道路的存在,可能的修复-Werror=dev不会触发非0 CMake退出代码和--no-warn-unused-cli是我所寻找的相反。

作为CMake似乎不支持此功能的解决方法,我装饰了我的C++ Jenkins作业,使用Text Finder plugin检查“CMake Warning”以在构建输出中找到该字符串时失败构建。

Jenkins TextFinder Plugin

+0

你能告诉你如何在詹金斯打电话给CMake吗?如果CMake脚本文件中存在“真正的错误”,如语法错误,它是否工作? – Florian

+0

我在Jenkins中使用命令“cmake -Werror = dev -GNinja -DCMAKE_BUILD_TYPE = Debug -DAddressSanitizerMode = ON ..”调用CMake,它确实可以检测真正的错误,如语法错误。这个问题是因为意识到如果“-DAddressSanitizerMode = ON”有一天会拼错,CMake会退出0,地址会被unsanitized,并且一个可以被-fsanitize = address捕获的内存泄漏可以被部署到生产环境中。 –

回答

1

我检查了代码,你不能把这个Warning成一个错误。如果你看一下cmake::RunCheckForUnusedVariables()它发出

  • 警告
    • CMake Warning ...

,而不是一个

  • AUTHOR_WARNING
    • CMake Warning (dev) ...

所以,你无法通过命令行选项提升正常警告错误。

在这些情况下,命令行调用将始终返回0

您可以更改CMake的源代码,也可以重写CMake脚本代码中未使用的变量。

相关问题