GNU Make와 함께 CMake 사용 : 정확한 명령을 어떻게 볼 수 있습니까?


281

CMake를 GNU Make와 함께 사용하고 모든 명령을 정확하게보고 싶습니다 (예 : 컴파일러 실행 방법, 모든 플래그 등).

GNU make에는 --debug있지만 다른 옵션이 도움이되지 않는 것 같습니다. CMake는 디버깅 목적으로 생성 된 Makefile에 추가 플래그를 제공합니까?


2
또는 완전하고 상세하게 실행되는 명령 행을 숨기고 조용하고 조용한 컬러 출력 만 표시하는 방법과 같은 검색어를 추가하려면.
ulidtko


mkdir build; cd build; cmake .. --debug-output; make VERBOSE=1
parasrish

답변:


369

make를 실행할 때 VERBOSE=1전체 명령 출력을 보려면 add 를 추가 하십시오. 예를 들면 다음과 같습니다.

cmake .
make VERBOSE=1

또는 -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON생성 된 Makefile에서 영구 상세 명령 출력을 위해 cmake 명령에 추가 할 수 있습니다 .

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

관심이 적은 출력을 줄이려면 다음 옵션을 사용하십시오. 옵션 CMAKE_RULE_MESSAGES=OFF과 같은 제거합니다 라인 [33 %] 건물 C 객체 ... , 동안 --no-print-directory처럼 행을 필터링 현재 디렉토리를 인쇄 할 수 있도록 지시 make[1]: Entering directorymake[1]: Leaving directory.

cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory

12
이 솔루션은 너무 장황하게 만들어 많은 CMake를 인쇄하고 흥미로운 내부 요소를 만듭니다. 컴파일 및 링크 명령 만 표시하는 방법이 있습니까 (즉, 일반적으로 문제 디버깅과 관련이있는 것) 아마도 실패한 명령 만 표시 할 수도 있습니다.
Tronic 2012

최고의 구글 히트는 "g ++ 명령 줄 만보고 싶다면 가능하다면 verbose Makefiles와 관련하여 grep & Co.를 사용해야한다"고 권장 한다 . 아마도 cmake 경험이 많은 개발자는 다른 조언을 가지고있을 것입니다.
Trevor Boyd Smith

7
그건 그렇고, 당신이 그것을 지원하는 플랫폼에 있다면 cmake -GNinja . ; ninja -v최소한의 보풀로 아주 멋진 출력을 보여줍니다.
richq

10
한 줄 ...cmake --build . -- VERBOSE=1
letmaik

cmake를 실행 한 후 빌드 디렉토리에 makefile이 없기 때문에 새로운 cmake 버전으로 작업해야합니다.
DrumM

80

CMakeLists.txt파일 에서 옵션을 다음 과 같이 설정하는 것이 편리합니다 .

set(CMAKE_VERBOSE_MAKEFILE ON)

3
자신의 프로젝트에는이 작업을 수행하지 마십시오. 모든 사용자가 자세한 빌드 출력을보고 싶지는 않습니다. 도서관을 이용하는 모든 사람에게 이것을 강요하지 마십시오. CMAKE_VERBOSE_MAKEFILE 디버깅 목적으로 기본적으로 꺼져 있으며 필요한 경우 사용자가 선택해야합니다.
Ela782

3
그래서? 개발자가 여러 명이고 선택하려는 경우 언제든지 캐시 변수로 추가 할 수 있습니다. 그러나 그렇습니다. 프로젝트의 릴리스 버전에서는 기본적으로 해제되어 있어야합니다.
James Hirschorn 4

1
cmake가 GUI에 의해 호출되므로 qt.io QtCreator를 사용할 때 유용한 옵션입니다. 감사합니다!
그랜트 Rostig

9

또는 단순히 다음과 같이 쉘에서 VERBOSE 환경 변수를 내보내십시오. export VERBOSE=1


8

CMake GUI를 사용하는 경우 고급보기로 바꾸면 옵션은 CMAKE_VERBOSE_MAKEFILE입니다.


GUI를 사용하지 않고 텍스트 파일에서이 옵션을 설정하려면 어떻게해야합니까?
osgx

4

-ggdb깃발이 있는지 확인하기 위해 비슷한 것을 시도하고 있었습니다.

깨끗한 디렉토리에서 make를 호출하고 찾고있는 플래그를 grep하십시오. 내가 쓰는 debug것보다 오히려 찾고 ggdb있습니다.

make VERBOSE=1 | grep debug

-ggdb플래그는 컴파일 명령이 팝업 것이 모호한 충분했다.

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