2011-11-10 3 views
4

cmake에서 사용자 지정 대상을 정의했습니다. 이제이 대상이 cmake 대상 test이 실행될 때만 빌드되도록하고 싶습니다. 이것을 어떻게 할 수 있습니까?cmake 대상에 종속성을 추가하는 방법

대상이 make test이고 이전에 호출해야하는 make coverage 대상이 있거나 실행하기 전에 make test을 호출 할 수 있습니다.

어떻게이 동작을 cmake에서 정의 할 수 있습니까?

여기 내 코드가 예상대로 작동하지 않습니다. 테스트를하기 전에 테스트를 호출해야한다는 보장에 의존하고 싶습니다.

ADD_CUSTOM_TARGET(
     coverage COMMAND /bin/bash ${LIBPIPE_BINARY_DIR}/cmake/scripts/coverage.sh 
     DEPENDS test 
    ) 
+0

테스트 란 무엇입니까? custom_command 또는 custom_target? – arrowd

+0

테스트는 custom_target입니다. – tune2fs

+0

이상합니다. 사용자 지정 대상은 항상 오래되었으므로 make coverage를 실행하면 먼저 테스트를 실행해야합니다. – arrowd

답변

3

CMake FAQ 상태는 사용자 정의 목표를 정의하는 add_custom_command/add_custom_target 명령은하는 의존 매개 변수가있다.

+0

나는 이것을 보았다. 그러나 불행하게도 그것은 나를 위해 일하지 않았다. 위에서 시도한 코드를 추가했습니다. – tune2fs

+0

여기 당신과 관련된 비슷한 주제가 http://stackoverflow.com/questions/733475/cmake-ctest-make-test-doesnt-build-tests –

6

"DEPENDS 테스트"절을 추가 할 수 없습니다. CMake의 미리 정의 된/내장 된 타겟 (all, install, package, test, clean)은 CMakeLists.txt 파일의 실제 타겟으로 사용할 수 없습니다. 따라서 내장 된 대상에 대한 종속성을 표현할 수 없습니다.

이 기능에 대한 CMake 버그 추적기에 뛰어난 기능 요청이 있지만 아직 구현되지 않았습니다. http://public.kitware.com/Bug/view.php?id=8438

그러나 사용자 지정 대상에 대한 명령은 "make test"를 먼저 호출 한 다음 변경 한 다음 적용 명령을 실행할 수 있습니다.

관련 문제