如何使用CMake测试C ++应用程序没有内存错误?

时间:2013-10-23 12:46:13

标签: c++ cmake ctest

我在CMake中有一个C ++项目,我已经实现了单元测试(使用GoogleTest)以及集成测试,即执行应用程序并使用regexp检查结果,例如。

add_test(NAME MyAppIntegration.testRefitRunMse COMMAND my_application "--refit=true")
set_tests_properties(MyAppIntegration.testRefitRunMse PROPERTIES PASS_REGULAR_EXPRESSION "mse\\=1\\.53611e\\-05")

现在我想像上面那样做,但运行应用程序来检测内存错误,例如只需运行./my_application并使用valgrind检查内存错误。我怎样才能做到这一点?请注意,我知道ctest -D ExperimentalMemCheckctest -T memcheck但在这里我最终得到的错误Cannot find file DartConfiguration.tcl似乎与我不需要的信息中心配置相关。

1 个答案:

答案 0 :(得分:4)

好的,我找到了一个可能的解决方案。将这些行添加到CMakeLists.txt

## valgrind
find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
INCLUDE(Dart)

生成所需的DartConfiguration.tcl,然后重新调用:

ctest -T memcheck

运行所有测试,同时检查内存错误。