首页 > 解决方案 > 使用 CMake + make 只运行一个测试

问题描述

如果我的项目有一堆测试,我可以运行它们 - 在cmakeing 和makeing 构建之后,构建 - 使用make test.

但是如果我只想运行我的一项测试呢?也就是说,我add_test()在测试中有 a 的项目之一CMakeFile.txt

标签: testingcmake

解决方案


tl;博士- 这样做:

cd $YOUR_BUILD_DIRECTORY
ctest -R name_of_your_test

解释

以下是您可能感到困惑的方式:

  1. 您试图使用 来执行此操作make,因为make test为您运行所有测试。这不适用于单个测试(尽管有一种解决方法 - 请参阅@danger89's answer)。ctest是跨平台的方式。

  2. 你开始使用ctest, 例如在你的主项目目录中,你可能得到了类似的东西:

     *********************************
     No test configuration file found!
     *********************************
     Usage
    
       ctest [options]
    

    这没有帮助。

  3. ...所以你想“好吧,也许ctest有一个-C开关,比如 CMake 和 GNU Make”——事实上,它有一个-C开关!但这并没有达到您的预期:

     [joeuser:/home/joeuser/src/myproj]$ ctest -C build
     Test project /home/joeuser/src/myproj
     No tests were found!!!
    

你实际需要做的:

  cd $YOUR_BUILD_DIRECTORY
  ctest -R name_of_your_test

(注意-R匹配正则表达式。)这应该有效。请注意,您可以列出要运行的测试,而不是通过传递-N来实际运行它们ctest


感谢@RTsyvarev 为我指明了正确的方向


推荐阅读