CMakeLists.txt 파일을 어떻게 디버깅합니까?


답변:


62

CMake에 대한 대화 형 디버거 그러나 또한 플래그가 없다 -Wdev, --debug-output그리고 --trace어떤 힘 도움이됩니다. 또한 로그 파일 확인 기억 CMakeFiles\CMakeOutput.log하고 CMakeFiles\CMakeError.log(A 형 또는 헤더의 존재를 확인하는 동안, 예를 들어) CMake 호출 프로세스 주로 수집 출력.

버전 3.7 부터 CMake는 이제 공식적으로 "서버 모드"를 지원하므로 가까운 장래에 IDE 통합이 개선 될 것입니다. 초기 지원은 Qt CreatorVisual Studio 2017 RC 모두에 있습니다.


if문 을 디버그하기 위해 어떤 것을 사용 CmakeList.txt합니까? came --debug ...그리고 cmake --debug-output ...그들을 인쇄되지 않습니다. Bash에서 동등한 것은 bash -x <cmd>.
jww

@jww 나는 당신이 무엇을 디버깅하려고하는지 100 % 확신하지 못합니다. 그러나의 출력 --trace은 일반적으로 상당히 광범위합니다 (출력을 파일로 리디렉션!)
Joe

스크립트를 디버깅하고 특정 코드 블록이 입력되지 않는 이유를 이해하려고했습니다. 그러나 나는 문제를 발견했다 string(STRIP ...). 또한 Cmake 변수에서 후행 줄 바꿈을 제거하는 방법을 참조하십시오 . . 당신이 무엇을하는지 모른다면 사과드립니다 bash -x.
jww

로그 확인 만 언급해서는 안됩니다. 로그를 확인하는 방법을 설명해야합니다.
Thomas Jay Rush

@ThomasJayRush 로그 파일의 위치와 내용에 대한 정보를 추가했습니다. 그 이상의 모든 것은 특정 문제에 따라 다릅니다.


5

steveire의 CMake Daemon Tools가 있습니다. 나는 그것들을 직접 사용하지는 않았지만 그들은 디버거에 매우 가까운 것처럼 보이는 내성을위한 가능성을 제공한다고 주장한다.

편집 : 이제 CMake-server 라고 하며 CMake 3.7의 일부입니다.


3

CMakeLists.txt 파일을 "디버그" 하기 위해 variable_watch 를 사용하고 싶습니다 . 내 스크립트 상단에 설정하십시오.

variable_watch(SOME_MY_VAR)

2

또한 env var에 대해 읽어보십시오 VERBOSE: https://cmake.org/cmake/help/latest/envvar/VERBOSE.html

나는 이것을 이렇게 사용했다 :

export VERBOSE=defined
make

좀 더 자세한 정보를 얻었습니다.

다른 경우 CMakeLists.txt에는 다음 행을 포함하도록 파일을 편집 하십시오.

set(CMAKE_VERBOSE_MAKEFILE ON)

(이에 대한 일부 게시물은 https://bytefreaks.net/programming-2/make-building-with-cmake-verbose입니다 ).

또한 cmake디버그 출력을 제어하는 유용한 옵션이 있습니다. 맨 페이지 https://cmake.org/cmake/help/latest/manual/cmake.1.html을 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.