CLion 환경에서 vcpkg 패키지 관리자 설정 및 CMake find_package 활용 방법

vcpkg 개요 및 설치

vcpkg는 Microsoft에서 관리하는 오픈 소스 C++ 패키지 관리자로, 라이브러리 의존성 관리를 간소화합니다. CLion과 같은 IDE와 결합하면 라이브러리 설치부터 프로젝트 적용까지의 과정을 자동화할 수 있습니다.

먼저, 로컬 환경에 vcpkg를 설치하기 위해 Git 저장소를 클론하고 부트스트랩 스크립트를 실행합니다.

# 저장소 복제
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg

# 운영체제별 초기화 스크립트 실행
# Windows
.\bootstrap-vcpkg.bat
# Linux/macOS
./bootstrap-vcpkg.sh

패키지 설치 및 Triplet 설정

vcpkg는 'Triplet'이라는 개념을 사용하여 아키텍처, 운영체제, 링크 방식(정적/동적)을 정의합니다. 기본값은 보통 x64-windows 또는 x64-linux입니다.

# 사용 가능한 Triplet 목록 확인
./vcpkg help triplet

# 특정 라이브러리 설치 (예: sqlite3)
# Windows에서 MinGW 동적 라이브러리 사용 시
.\vcpkg.exe install sqlite3:x64-mingw-dynamic

# Linux 환경에서 기본 아키텍처로 설치
./vcpkg install sqlite3

CLion과 vcpkg 연동 (CMake 옵션 설정)

CLion에서 vcpkg를 인식하게 하려면 CMake 도구 체인 파일(Toolchain File)의 경로를 지정해야 합니다. Settings/Preferences > Build, Execution, Deployment > CMake 항목의 CMake options에 다음 설정을 추가합니다.

-DCMAKE_TOOLCHAIN_FILE=[vcpkg_설치_경로]/scripts/buildsystems/vcpkg.cmake
-DVCPKG_TARGET_TRIPLET=x64-mingw-dynamic

CMakeLists.txt에서 패키지 참조하기

vcpkg를 통해 설치된 라이브러리는 표준 CMake 명령인 find_package를 사용하여 프로젝트에 포함할 수 있습니다. 다음은 SQLite3 라이브러리를 찾는 예시입니다.

cmake_minimum_required(VERSION 3.20)
project(DataProject)

# vcpkg에서 제공하는 패키지 탐색
find_package(unofficial-sqlite3 CONFIG REQUIRED)

add_executable(DataApp main.cpp)

# 라이브러리 타겟 링크
target_link_libraries(DataApp PRIVATE unofficial-sqlite3::sqlite3)

Boost 라이브러리 설정 심화 예제

Boost와 같이 여러 컴포넌트로 구성된 라이브러리는 다음과 같이 특정 모듈을 지정하여 로드할 수 있습니다. 프로젝트의 CMakeLists.txt에 설정을 직접 추가하여 환경 구성을 자동화할 수도 있습니다.

# 프로젝트 선언 전 vcpkg 설정 강제 (선택 사항)
set(VCPKG_TARGET_TRIPLET "x64-windows-static" CACHE STRING "" FORCE)
set(CMAKE_TOOLCHAIN_FILE "C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "" FORCE)

project(BoostApp CXX)

# 필요한 Boost 컴포넌트 지정
find_package(Boost REQUIRED COMPONENTS system filesystem json)

if(Boost_FOUND)
    message(STATUS "Boost 버전: ${Boost_LIB_VERSION}")
    message(STATUS "Boost 포함 경로: ${Boost_INCLUDE_DIRS}")
    
    add_executable(BoostApp src/app.cpp)
    target_link_libraries(BoostApp PRIVATE 
        Boost::system 
        Boost::filesystem 
        Boost::json
    )
endif()

설정 후 CMake 캐시를 초기화하고 재구성(Reload CMake Project)하면, vcpkg가 설치된 경로에서 자동으로 헤더와 라이브러리 파일을 찾아 프로젝트 빌드 환경에 포함시킵니다. 시스템에 이미 설치된 다른 라이브러리와의 충돌을 방지하려면 VCPKG_INSTALLED_DIR 변수를 활용하여 설치 경로를 명확히 제어하는 것이 좋습니다.

태그: vcpkg cmake CLion C++ Boost

8월 17일 16:16에 게시됨