인프런 커뮤니티 질문&답변

mumbi님의 프로필 이미지
mumbi

작성한 질문수

readable_code::CMake - Fancy하게 C++ Project 만들기

The Structure for External Dependencies

configurate_package.cmake 의 project() 와 find_package()

작성

·

94

0

gtest/configurate_package.cmake 에 project(GTest...) 를 넣으면 GTest 가 설치되지도 않았는데 find_package() 에서 있는 걸로 처리되어서 install 이 안되고 있습니다.  혹시 제가 놓친 부분이 있을까요?  

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
mumbi님, 질문해주신 내용에 대해 직접적으로 관련된 정보는 제공하고 있지 않으나, 일반적인 상황에서 find_package() 함수의 작동 방식에 대해서 설명드릴 수 있습니다.

find_package()는 CMake에서 외부 라이브러리 또는 프로젝트를 찾기 위해 사용하는 함수입니다. 이 함수를 사용할 때 CMake는 지정된 라이브러리의 설치 경로를 찾으려고 시도하며, 만약 라이브러리가 시스템에 이미 설치되어 있다면 해당 경로 정보를 반환합니다.

project() 명령은 현재 CMake 프로젝트의 정보를 설정하는 데 사용됩니다. project(GTest...)gtest/configurate_package.cmake 파일에 추가했다고 할 때, 이는 해당 CMake 스크립트 안에서 GTest를 찾거나 설정하려는 의도일 수 있습니다.

문제의 원인으로는 여러 가지가 있을 수 있으나, 가장 흔한 경우는 find_package()가 실행될 때 CMake가 해당 패키지를 시스템 내에서 이미 찾았다고 판단하여 추가 설치 과정을 건너뛰게 되는 것입니다. 이는 find_package()가 특정 경로에 라이브러리가 이미 존재하는 지 확인하고, 조건에 따라 찾은 라이브러리의 경로를 사용하기 때문입니다.

이런 상황을 해결하기 위해, CMakeLists.txt 파일이나 해당 CMake 설정 파일에서 find_package() 호출 전에 GTest와 관련된 경로를 명확하게 설정해주는 것이 중요합니다. 또는 find_package() 함수에 몇몇 추가 옵션을 지정하여 라이브러리 탐색 방식을 조정할 수 있습니다. 예를 들어, REQUIRED, QUIET, 또는 NO_MODULE 등의 옵션을 사용할 수 있습니다.

더 자세한 해결 방안은 find_package() 함수의 공식 문서를 참고하거나, GTest가 올바르게 설치되고 CMake가 해당 라이브러리를 찾을 수 있도록 환경을 구성하는 것이 좋겠습니다.

mumbi님의 프로필 이미지
mumbi

작성한 질문수

질문하기