除非测试可执行文件名为“tests”,否则无法运行ctest

时间:2016-11-13 11:18:01

标签: cmake ctest

我想让CMake / CTest工作。我的问题是CTest似乎没有拿起测试可执行文件,除非它被命名为tests

在我的最小示例项目中,我有一个CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.0)
project(myproject C)
enable_testing()
set(TEST_EXE_NAME tests)
add_executable(${TEST_EXE_NAME} test_main.c)
add_test(NAME "My tests" COMMAND ${TEST_EXE_NAME})

...还有一个非常简单的测试程序test_main.c,它始终通过:

int main() {
  return 0;
}

我可以运行make && make test,只要TEST_EXE_NAME设置为tests,一切就会好起来的。 但是,当我将可执行文件名更改为其他名称时,例如mytests,我收到以下错误:

Could not find executable tests
Looked in the following places:
tests
tests
Release/tests
Release/tests
Debug/tests
...

我错过了什么?

1 个答案:

答案 0 :(得分:2)

根据add_test() The test name may not contain spaces, quotes, or other characters special in CMake syntax. ,测试名称可能不包含空格:

var propriedades = {    
    "areaDamaged" : {
        "similaridade": "Sim",
        "valores": {
             "Desconhecido" : "?",
             "scattered" : "0",
             "low-areas" : "1",
             "upper-areas" : "2",
             "whole-field" : "3"
         }
    },
 ...

在有问题的例子中,测试命名为#34;我的测试"。将测试名称更改为" My_tests"解决了这个问题。

显然,空格字符后面的测试名称部分(即" tests")被解释为测试可执行文件名。