我想使用 ctest 通过 valgrind 运行我的测试。 因此,我在我的 cmake 文件中写了以下内容:
include(CTest)
find_program(MEMORYCHECK_COMMAND valgrind)
set(MEMORYCHECK_COMMAND_OPTIONS "--leak-check=full --error-exitcode=1")
set(MEMORYCHECK_SUPPRESSIONS_FILE "${PROJECT_SOURCE_DIR}/.valgrind-suppressions")
这似乎有效。当我在泄漏的程序上运行 ctest -D ExperimentalMemCheck .
时,它告诉我它发现了内存泄漏,但是没有以状态 != 0 退出。
如何在失败时获得退出代码 1?
最佳答案
关键是您将 set(MEMORYCHECK_COMMAND_OPTIONS "--error-exitcode=1")
置于 include(CTest)
调用之上。该变量显然仅在首次包含 CTest 时才被考虑,在包含 CTest 后设置它时无效。
随后调用 ctest -T memcheck
时,该命令以非零退出状态正确退出。
另请参阅此问题以供引用:How to pass arguments to memcheck with ctest?
关于c - 如何让 CMake/CTest memcheck 在失败时以状态码 1 退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55321934/