Cmake Can';t运行ctest,除非测试可执行文件名为";测试“;

Cmake Can';t运行ctest,除非测试可执行文件名为";测试“;,cmake,ctest,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 "

我正在努力让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\u main.c
,它总是通过:

int main() {
  return 0;
}
我可以运行
make&&make test
,只要
test\u EXE\u NAME
设置为
tests
,一切都很好但是,当我将可执行文件名称更改为其他名称时,例如,
mytests
,我会得到以下错误:

Could not find executable tests
Looked in the following places:
tests
tests
Release/tests
Release/tests
Debug/tests
...
我缺少什么?

根据for
add_test()
测试名称不能包含空格:

The test name may not contain spaces, quotes, or other
characters special in CMake syntax.
在有问题的示例中,测试名为“My tests”。将测试名称更改为“My_tests”可以解决此问题


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

更改名称后是否重新编译/重新生成?如果没有,Ctest将查找新名称,但文件名仍为旧名称。是的,我执行了完整的rm-rf./*&&cmake PATHTOSOURCE&&make&&make Test可能类似,但我有一个名为“testing”的可执行文件,并出现以下错误:
ld:无法打开输出文件进行写入:testing,架构x86的errno=21\u 64 clang:error:linker命令失败,退出代码为1(使用-v查看调用)
更改了名称,工作正常。