2014-11-25 5 views
2

CMake를 사용하여 라이브러리를 만든 다음 테스트 exe를 작성했습니다. 빌드가 끝나면 자동으로 테스트 케이스를 실행하고 싶습니다. 여기 내 CMakeLists.txt입니다. .exe 확인 있지만 실행되지 않습니다. 나는 리눅스를 사용하고있다.Cmake를 사용하여 CppuTests를 실행하십시오.

cmake_minimum_required (VERSION 2.8.7) 
project (tests) 

set(LIBRARY_NAME exetests) 
set(LIBRARY_SOURCES RunAllTests.cpp Tests.cpp) 

set(CMAKE_CXX_FLAGS "-fPIC -Werror -O2 -std=c++0x -g") 

add_executable(exetests ${LIBRARY_SOURCES}) 
target_link_libraries(exetests CppUTest) 
target_link_libraries(exetests CppUTestExt) 
target_link_libraries(exetests testLibrary) 

#THIS IS WRONG. EXE is not Run 
add_custom_target(COMMAND ./exetests) 

답변

2

CTest은 CMake에서 만든 실행 파일 테스트 용으로 사용할 수 있습니다. 당신의 CMakeLists.txt에서 사용 enable_testing 및 바이너리 디렉토리에

... 
enable_testing() 
... 
add_executable(exetests ${LIBRARY_SOURCES}) 
... 
add_test(NAME mytest1 COMMAND exetests) 

add_testmake exetests를 컴파일하고 ctest에 의해 테스트를 실행하는 명령. 추가 정보는 CMake Wiki에 있습니다. 문서에서

+0

는 내가 찾던입니다. – user1876942

+1

결국 add_custom_command를 사용했습니다. – user1876942

0

:

두 번째 서명은 라이브러리 또는 실행 파일과 같은 대상에 대한 사용자 정의 명령을 추가합니다. 이것은 타겟을 빌드하기 전후에 작업을 수행 할 때 유용합니다. 명령은 대상의 일부가되며 대상 자체가 빌드 될 때만 실행됩니다. 대상이 이미 빌드 된 경우 명령이 실행되지 않습니다. 내가 코드를 빌드 할 때 테스트가 자동으로 실행하는

add_executable(RunAllTests RunAllTests.cpp) 
target_link_libraries(RunAllTests imp_cpputest LedDriverTest LedDriver sprintfTest RuntimeErrorStub) 
add_custom_command(TARGET RunAllTests COMMAND cd ../bin && ./RunAllTests POST_BUILD) 
+0

이 방법을 사용하는 것이 좋지만 일반적으로 각 빌드마다 * all * 테스트를 실행하는 것은 좋지 않습니다. 단지 확장되지 않습니다. – DevSolar

관련 문제