2016-11-13 41 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