dcm*_*m88 3 command-line valgrind cmake ctest memcheck
我想从命令行使用 ctest 用 memcheck 运行我的测试并传入 memcheck 命令的参数。
我可以运行ctest -R my_test来运行我的测试,我什ctest -R my_test -T memcheck至可以通过 memcheck运行来运行它。
但我似乎无法找到一种方法将参数传递给该 memcheck 命令,例如--leak-check=full或--suppressions=/path/to/file。
在阅读了 ctest 的文档后,我尝试将-D选项与CTEST_MEMCHECK_COMMAND_OPTIONS和 一起使用MEMCHECK_COMMAND_OPTIONS。我也尝试将这些设置为环境变量。我的尝试都没有产生任何不同的测试命令。总是如此:
Memory check command: /path/to/valgrind "--log-file=/path/to/build/Testing/Temporary/MemoryChecker.7.log" "-q" "--tool=memcheck" "--leak-check=yes" "--show-reachable=yes" "--num-callers=50"
Run Code Online (Sandbox Code Playgroud)
如何从 ctest 命令行控制 memcheck 命令?
dcm*_*m88 10
TL; 博士
ctest --overwrite MemoryCheckCommandOptions="--leak-check=full --error-exitcode=100" \
--overwrite MemoryCheckSuppressionFile=/path/to/valgrind.suppressions \
-T memcheck
Run Code Online (Sandbox Code Playgroud)
我终于找到了覆盖这些变量的正确方法,但不幸的是,从文档中理解这一点并不容易。所以,为了帮助下一个需要处理这个问题的可怜人,这里是我对设置memcheck.
在CTestConfig.cmake顶级源目录中的 a 中,或在CMakeLists.txt(调用之前include(CTest)) 中,您可以设置MEMORYCHECK_COMMAND_OPTIONS或MEMORYCHECK_SUPPRESSIONS_FILE。当你include(CTest),CMake 将DartConfiguration.tcl在你的构建目录中生成一个,并且设置上述变量将分别填充MemoryCheckCommandOptions和MemoryCheckSuppressionFile在这个文件中。这是ctest在您的构建目录中解析以填充其内部变量以运行该memcheck步骤的文件。因此,如果您想在 cmake 配置期间为 memcheck 设置项目选项,这就是方法。
如果您想在已经正确配置构建目录后修改这些选项,您可以:
--overwrite命令行选项为该运行设置这些 memcheck 选项。CMAKE_MEMORYCHECK_COMMAND_OPTIONS变量。我不知道这个变量是什么,我不认为 cmake 以任何方式意识到它。CTEST_MEMORYCHECK_COMMAND_OPTIONS(实际记录在 cmake 文档中的变量)没有效果。似乎这个变量只适用于我从未使用过的"CTest Client Scripts"。CTestConfig.cmakeCMakeLists.txtMEMORYCHECK_COMMAND_OPTIONS并MEMORYCHECK_SUPPRESSIONS_FILE没有明确记载中的cmake,只能间接地,在CTEST文档和测试使用CTEST教程。当ctest在构建运行时,它解析文件来填充其内部变量:
https://cmake.org/cmake/help/latest/manual/ctest.1.html#dashboard-client-via-ctest-command-line
我不清楚这是如何与
| 归档时间: |
|
| 查看次数: |
2012 次 |
| 最近记录: |