2012-10-04 6 views
2

cmake와 함께 gcov를 사용하고 있습니다. 모든 플래그가 올바르게 설정됩니다. .GCNO 파일이 제대로 작성됩니다. 그러나 소스 파일에서 생성 된 실행 파일을 실행할 때 상황은 조금 복잡합니다. 실행 파일은 bash 스크립트 내에서 실행됩니다.cmake에서 gcov를 사용할 때 .gcda 파일이 생성되지 않았습니다.

샘플 시나리오를 만들어 정확한 답을 줄 수있게하십시오.

파일 이름이 MY_FILE.CC이고 실행 파일 이름이 EXECUTABLE_FILE gake가 gcov에 설정된 모든 플래그와 함께 cmake를 사용하고 있습니다. THE_SCRIPT.SH라는 스크립트가 있는데, "make test"와 함께 실행해야합니다. 이 스크립트는 EXECUTABLE_FILE 파일을 실행합니다.

여기서 bash 스크립트 (THE_SCRIPT.SH)는 실행 파일 (EXECUTABLE_FILE)을 실행하고이 bash 스크립트를 실행하면 .GCDA 파일을 만들지 않는다는 아이디어가 있습니다. 실행 파일을 직접/수동으로 실행하면 .GCDA 파일이 생성됩니다. bash 스크립트는 하위 셸 내에서 실행되며 상위 셸은 소스 실행 파일이 실행되었는지 여부를 알 수 없습니다. 이것이 정확히 상황인지 누군가 확인해 줄 수 있습니까? 그렇지 않다면 정확한 문제는 무엇입니까? 그렇다면이 문제에 대한 해결책은 무엇일까요?

고마워요.

+0

여기서는 작동하는 gcov-cmake 통합이 있습니다. prog을 직접 실행할 때 gcda 파일이 생성되면 두 경우 모두에서 프로그램을 시작할 때 현재 작업 디렉토리를 확인할 수 있습니까? 스크립트에 의해 실행되면 임원이 현재 작업 디렉토리에 대한 쓰기 권한을 가지고 있지 않을 수도 있습니다. – Offirmo

+0

나는 매우 비슷한 문제를 겪고있다. 나는 CMake POST_BUILD 커스텀 커맨드를 통해 유닛 테스트를 실행하고 동시에 커버리지를 수집하려고합니다. 테스트 스크립트가 실행되고 테스트 실행 파일이 제대로 실행되지만 .gcda 파일은 생성되지 않습니다. 테스트 스크립트는 문제없이 "touch"를 사용하여 예상 된 .gcda 파일과 이름 및 위치가 같은 파일을 만들 수 있기 때문에 권한 문제는 아니라고 확신합니다. CMake가 gcov가 동의하지 않는 테스트 바이너리를 실행하기 위해 사용하는 환경에 대한 * 무언가 *가 있어야합니다. 그러나 그게 무엇인지는 확실하지 않습니다. –

+0

언급 : 테스트 스크립트를 CMake 외부에서 실행하면 문제없이 .gcda 파일이 생성됩니다. 그러나 CMake 내부에서는 주사위가 없습니다. –

답변

1

이 될 수도 있습니다. question은 (는) 문제와 관련이 있습니다.

아마도 깃발, 프로젝트의 디렉토리 구조 등에 대한 자세한 정보를 제공 할 수 있습니다.

+0

나는 그 질문을 슬픈 듯이 보았다. 올바른 플래그로 컴파일 중이며 (.gcno & gcda 파일을 생성 할 수 있습니다.) 예상되는 디렉토리에서 끝납니다. 다소 복잡한 구조의 out-of-source 빌드 트리를 가지고 있지만 파일이 올바른 위치에 있으며 gcov & lcov가이를 처리 할 수 ​​있습니다. 전에 언급했듯이 지난 주에 물건을 시험 할 때 무언가 어리석은 행동을한다고 생각합니다. 어쩌면 실수로 일부 정리 코드를 실행했을 것입니다. 이제 시스템이 의도 한대로 작동하기 때문입니다. –

+0

어쨌든 덕분에 현상금을 줄 것입니다. 아마 야생 거위 쫓기에 시간을 할애했기 때문입니다. –