2017-10-27 15 views
2

에서 CTest 테스트를 실행하려면? (CMakeLists에서 테스트를 검색 한 다음 add_test 매개 변수를 수동으로 명령 행에 복사 - 붙여 넣기 이외의)어떻게 어떤 특별한 CTest 테스트에서 모든 명령 줄 옵션을 mytarget GDB에서 실행할 수있는 어떤 쉬운 방법이 있나요 내가</p> <pre><code>add_executable(mytarget main.cpp) enable_testing() add_test(mytarget_test0 mytarget -option0) </code></pre> <p>이 CMakeLists.txt에 가정 디버거

실제 상황 : 나는 ctest를 사용하여 모든 테스트를 실행합니다. 하나는 실패합니다. 디버거에서 신속하게 열려고합니다.

다른 빌드 시스템에는 bazel bazel --run_under=gdbserver의 Meson meson test --gdb testname과 같이 gdb를 사용하는 명령 줄 매개 변수가 있습니다.

make clean 
make # Build target and all unit tests 
make test # Run all unit tests: make test 

당신은 단위 테스트 프레임 워크의 따라 한 결과 목록과 일부 출력을 얻을 것이다 : 나는 CTest

+0

그건 CTest가 의미하는 것이 아닙니다. 그리고 CMake 파일에서 명령을 쉽게 복사 할 수 있습니다. – usr1234567

+0

@ usr1234567 CTest 대신 무엇을 사용해야합니까? 다양한 커맨드 라인 인수로 타겟을 자동화하고 싶습니다. – random

답변

2

은 인수 검사 명령을 얻을 수 있습니다 : GDB

에 대한 명령 행 인수를 잡아 수 있습니다 정규 표현식을 사용하는 것보다

Test project ../cmake-build-debug-gcc7 
Constructing a list of tests 
Done constructing a list of tests 

1: Test command: ../cmake-build-debug-gcc7/my_tool "-v" "test0" 
    Test #1: my_tool_test0 

Total Tests: 1 

: 당신이 뭔가를 얻을 것이다 출력으로

ctest -R $regex_matching_test -V -N 

0

나는 다음과 같은 절차를 사용하여 유사한 아무것도 발견되지 않았다. 문제가 해결 될 때까지 gdb에서 실패한 테스트를 다시 실행하십시오. 전체 절차를 다시 시작하십시오.

IDE (예 : QtCreator)를 사용하는 경우 실패한 테스트 케이스를 통해 쉽게 디버깅 할 수 있습니다.

+0

make test는 디버거에서 테스트를 시작하지 않습니다. 실제로'gdb --args make test '를 실행하면 테스트가 아닌 make를 디버깅하게됩니다. Btw,'ctest' 명령을 사용하여 테스트를 실행할 수도 있습니다. ninja 또는 msvc로 빌드 한 경우에도 작동합니다. – random