2016-11-13 29 views
0

我试图让CMake/CTest工作。我的问题是,CTest似乎没有拿起测试可执行文件,除非它被命名为tests除非测试可执行文件名为“tests”,否则无法运行ctest

在我的小例子项目,我有一个单一的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 
... 

我缺少什么?

+0

更改名称后是否重新编译/重新制作?如果没有,Ctest会查找新名称,但这些文件仍旧以旧名称命名。 – ollo

+0

是的,我做了一个完整的rm -rf ./* && cmake PATHTOSOURCE && make && make test –

回答

2

按照CMake manualadd_test()测试名称不能包含空格:

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

在有问题的例子中,测试被命名为“我的测试”。将测试名称更改为“My_tests”可解决问题。

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

+0

如果你的问题解决了,请*接受*你的回答来标记这个问题已解决。 – ollo

相关问题