不能 运行 ctest 除非测试可执行文件被命名为 "tests"

Can't run ctest unless the test executable is named "tests"

我正在努力让 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
...

我错过了什么?

根据 CMake manual for add_test() 测试名称可能不包含 spaces:

The test name may not contain spaces, quotes, or other
characters special in CMake syntax.

在有问题的示例中,测试名为 "My tests"。将测试名称更改为 "My_tests" 即可解决问题。

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