2017-09-27 17 views
0

빌드 유형에 따라 테스트를 실행하려는 CMake 프로젝트를 만들려고합니다. 예. 퍼포먼스 빌드를하면 퍼포먼스 테스트 등을하고 싶다.ctest가 빌드 유형별 테스트를 호출하지 않습니다.

add_test는 그 목적으로 CONFIGURATIONS 매개 변수를 제공한다. 그러나 거기에 빌드 유형을 제공하면 ctest은 테스트를 찾지 못합니다.

다음은 동작을 재현하는 최소한의 CMakeLists.txt입니다. 쉘에서

project (test NONE) 
include (CTest) 

add_test (NAME test 
    CONFIGURATIONS Release 
  COMMAND cowsay) 

:

mkdir build 
cd build 
cmake -DCMAKE_BUILD_TYPE=Release ..  
cmake --build . 
ctest 

출력 :

Running tests...  
Test project /home/phil/cmaketest/build  
No tests were found!!! 

내가 실행하는 경우

ctest -C Release 

I 얻기 원하는 동작 테스트가 실행 즉,하지만 난 차라리하지 않는게 직접 -C Release을 입력해야합니다.

여기에 뭔가 잘못하고 있습니까? 아니면 들여 쓰여진 동작입니까?

답변

1

add_test (... CONFIGURATIONS ...)은 나중에 ctest -C ...으로 특정 구성에 대한 테스트를 나중에 실행하기위한 용도로만 사용됩니다.

예, 이것은 의도 한 것입니다. 이는 동일한 방식으로 단일 및 다중 구성 빌드 환경을 모두 지원한다는 것입니다.

당신은 단지 하나의 구성 환경을 지원하려는 경우, 당신은 할 수 :

if (CMAKE_BUILD_TYPE MATCHES "Release") 
    add_test (
     NAME test 
     COMMAND cowsay 
    ) 
endif() 
+0

이와 이상한 것은 다른 테스트 빌드 단계에서 서로 다른 컴파일/링크 플래그 필요하지만, 내가 좋아하는 뭔가를 할 수 있다는 것입니다 'cmake -DCMAKE_BUILD_TYPE = Release ..로 릴리즈 빌드를하고; cmake --build .' 그리고'ctest -C Coverage '로 코드 커버리지 테스트를 시작하십시오. 그러나 이것은 분명히 금지되어야한다. 그러나 현재 사용중인 설정으로는 의미없는 결과 만 나타납니다. – user26756