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 변수를 활용하여 설치 경로를 명확히 제어하는 것이 좋습니다.