cmake
테스트 및 디버그
수색…
Make로 빌드 할 때 디버깅하는 일반적인 접근법
make
가 실패했다고 가정하자.
$ make
대신 명령을 실행하려면 make VERBOSE=1
로 실행하십시오. 그런 다음 직접 볼 링커 또는 컴파일러 명령을 실행하십시오. 필요한 플래그 또는 라이브러리를 추가하여 작동 시키십시오.
그런 다음 변경해야 할 것을 파악하십시오. 따라서 CMake 자체는 올바른 인수를 컴파일러 / 링커 명령에 전달할 수 있습니다.
- 시스템에서 무엇을 바꿀 것인가 (설치할 라이브러리, 버전, CMake 자체 버전)
- 이전에 실패 할 경우, 설정할 환경 변수 또는 CMake에 전달할 매개 변수
- 그렇지 않으면 프로젝트의
CMakeLists.txt
또는FindSomeLib.cmake
와 같은 라이브러리 탐지 스크립트에서 변경해야 할 사항
이를 돕기 위해 CMakeLists.txt
또는 *.cmake
에 message(${MY_VARIABLE})
호출을 CMakeLists.txt
하여 검사 할 변수를 디버깅합니다.
CMake가 자세한 메이크 파일을 만들도록하십시오.
CMake 프로젝트가 project()
를 통해 초기화되면 결과 빌드 스크립트의 출력 상세가 다음을 통해 조정될 수 있습니다.
CMAKE_VERBOSE_MAKEFILE
이 변수는 프로젝트를 구성 할 때 CMake의 명령 행을 통해 설정할 수 있습니다 :
cmake -DCMAKE_VERBOSE_MAKEFILE=ON <PATH_TO_PROJECT_ROOT>
GNU make의 경우이 변수는 make VERBOSE=1
과 같은 효과를냅니다.
find_package () 오류 디버그
참고 : 표시된 CMake 오류 메시지에는 이미 "비표준"라이브러리 / 도구 설치 경로에 대한 수정 사항이 포함되어 있습니다. 다음 예제는 좀 더 자세한 CMake find_package()
출력을 보여줍니다.
내부적으로 지원되는 CMake 패키지 / 모듈
다음 코드 ( 문제의 모듈로 FindBoost
모듈 바꾸기)
cmake_minimum_required(VERSION 2.8)
project(FindPackageTest)
find_package(Boost REQUIRED)
다음과 같은 오류를 준다.
CMake Error at [...]/Modules/FindBoost.cmake:1753 (message):
Unable to find the requested Boost libraries.
Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing
Boost's headers.
그리고 라이브러리를 찾으려는 곳이 궁금 할 때 Boost
모듈이 더 자세한 출력을 얻는 것과 같은 패키지에 _DEBUG
옵션이 있는지 확인할 수 있습니다
$ cmake -D Boost_DEBUG=ON ..
CMake 사용 가능 패키지 / 라이브러리
다음 코드 ( Xyz
를 해당 라이브러리로 대체)
cmake_minimum_required(VERSION 2.8)
project(FindPackageTest)
find_package(Xyz REQUIRED)
다음과 같은 오류를 준다.
CMake Error at CMakeLists.txt:4 (find_package):
By not providing "FindXyz.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Xyz", but
CMake did not find one.
Could not find a package configuration file provided by "Xyz" with any of
the following names:
XyzConfig.cmake
xyz-config.cmake
Add the installation prefix of "Xyz" to CMAKE_PREFIX_PATH or set "Xyz_DIR"
to a directory containing one of the above files. If "Xyz" provides a
separate development package or SDK, be sure it has been installed.
그리고 라이브러리를 찾으려는 곳이 궁금 할 때, 문서화되지 않은 CMAKE_FIND_DEBUG_MODE
글로벌 변수를 사용하여 더 자세한 출력을 얻을 수 있습니다.
$ cmake -D CMAKE_FIND_DEBUG_MODE=ON ..