Blog categories

Comments

[C++] Vcpkg 이용하여 boost 라이브러리 설치하기

[C++] Vcpkg 이용하여 boost 라이브러리 설치하기

VCPKG란?

마이크로소프트(Microsoft)가 개발한 툴로, 여러 C/C++ Library 를 간편하게 설치할 수 있도록 돕는다.
다양한 플랫폼에서 사용 가능하게 설계 되어, Windows 뿐만 아니라 Linux 및 MacOS에서 사용 가능하다.

https://vcpkg.io/en/index.html

Vcpkg를 Windows 에서 사용하기 위해서는
(1)Windows 7 이상, (2) Visual Studio 2015 Update 3 또는 그 이상의 버전이 설치되어 있어야 한다.
추가로 Git이 설치되어 있을 경우 이를 사용할 수 있다.

 

VCPKG 설치

 

VCPKG 다운로드

VCPKG 코드가 업로드 되어 있는 깃허브 저장소(GitHub repository)에서 다운 받을 수 있다.

다운 받는 방법은 git 명령어를 사용하는 방법과 깃허브에서 직접 압축 파일로 받는 방법 두 가지가 있다.

 

    1. 깃(git)이 설치되어 있다면 아래 명령어로 코드를 clone 하면 된다.

 

git clone https://github.com/microsoft/vcpkg

 

    1. 만일 없을 경우 직접 깃허브 저장소에 방문하여 다운 받는다.

GitHub – microsoft/vcpkg

설치 위치는 자유롭게 정할 수 있다.
이후 컴파일 과정에서 사용을 고려하면 각 드라이브 최상단(C:\ 등) 에 폴더를 생성해 저장하면 편할 것으로 생각된다.
전체 파일 경로는 영어로, 공백이 없으면 좋을 것으로 생각된다.

공식 홈페이지의 예제에 따르면 C:\src\vcpkg 나 C:\dev\vcpkg 과 같이 디렉토리를 생성하고 설치할 수 있다.

 

VCPKG 빌드

다운 받은 VCPKG 폴더로 이동하여 폴더 안에 bootstrap-vcpkg.bat 파일을 실행한다.

 

.\bootstrap-vcpkg.bat

VCPKG 사용법

  • list: 현재 설치 된 라이브러리 확인
    .\vcpkg list
  • install: 새로운 라이브러리 설치
    .\vcpkg install [packages to install]

Visual studio에서 vcpkg에 설치된 라이브러리를 불러 활용하기 위해서는 아래와 같은 명령을 수행한다.

C:\vcpkg-2023.02.24> .\vcpkg integrate install
Applied user-wide integration for this vcpkg root.
CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg-2023.02.24/scripts/buildsystems/vcpkg.cmake"

All MSBuild C++ projects can now #include any installed libraries. Linking will be handled automatically. Installing new libraries will make them instantly available.

 

명령을 조금 더 쉽게 수행하기 위해서는 이를 vcpkg 경로를 시스템 환경 변수에 등록한다.
시스템 속성>환경 변수> 시스템 변수>Path에 vcpkg 경로를 적고 저장한다.

이제 콘솔에서 vcpkg 폴더에 들어갈 필요 없이 vcpkg 명령이 수행된다.

Boost 라이브러리 설치

VCPKG에서 사용가능한 라이브러리 목록은 아래 링크에서 찾을 수 있다.

  • arm-uwp
  • arm64-windows
  • x64-linux
  • x64-osx
  • x64-uwp
  • x64-windows-static
  • x64-windows
  • x86-windows

이중 자신의 환경에 알맞는 라이브러리를 선택하여 설치한다.
여기서는 x64-windows를 설치하도록 한다.
정적 라이브러리가 필요한 경우 x64-windows-static을 설치할 수 있다.

 

.\vcpkg install boost:x64-windows

 


만약 이후에도 Visual studio에서 boost 라이브러리가 인식되지 않는다면 해당 VS 프로젝트 파일을 열어서 수정이 필요하다.
<PropertyGroup Label=”Globals”> 하위 섹션에 다음을 추가한다.

 

<PropertyGroup Label="Globals">
  ...
  <VcpkgTriplet>x64-windows</VcpkgTriplet>
  <VcpkgEnabled>true</VcpkgEnabled>
</PropertyGroup>

여기서 VcpkgTriplet 에 들어갈 내용은 자신의 환경에 따라 다르다.
자신이 설치한 boost 라이브러리에 따른다.

 

프로젝트의 속성 페이지>구성 속성>vcpkg>Triplet에 작성해도 된다.

Image module

각 라이브러리 패키지에는 설치 환경에 따른 옵션 종류가 다양하다.
예를 들어 boost 라이브러리 설치 시 사용 가능한 옵션의 종류에는 아래와 같이 있다.

만약 다음과 같은 에러가 난다면 프로젝트 속성과 설치한 boost 라이브러리 간에 설정 차이가 있는 것이다.

error LNK2038: mismatch detected for 'boost_log_abi': value 'v2_mt_nt6' doesn't match value 'v2s_mt_nt6' in xxx.obj

여기서 v2_mt_nt6와 v2s_mt_nt6의 차이는 다음과 같다.

  • v2_mt_nt6: dynamically linked 되며 multithreading을 지원하는 windows vista 또는 더 높은 버전의 Windows (version 6) 를 지원하는 라이브러리 버전
  • v2s_mt_nt6: statically linked되며 multithreading를 지원하는 windows vista 또는 더 높은 버전의 Windows (version 6)를 지원하는 라이브러리 버전

만약 boost library를 dynamically linked 시키기 위해서는 BOOST_LOG_DYN_LINK (log library를 dyn link)  또는 BOOST_ALL_DYN_LINK (boost의 전체 library를 dyn link) 를 정의해주어야 한다.

만약 vcpkg를 사용하지 않고 직접 컴파일 한 경우 static과 dynamic linked library 의 차이는 각 lib 파일 접두어(prefix)로 lib 가 붙는지 여부로 확인할 수 있다.

Boost 라이브러리 삭제

VCPKG 사용 시 와일드카드(*)가 사용되지 않는다.
boost 라이브러리의 경우 boost-xxx로 이름된 여러 라이브러리 파일들이 같이 설치 되는데 이를 삭제하기 위해서는 아래와 같은 명령어를 사용한다.

아래 명령어는 x64 Windows 환경으로 지정하여 설치한 boost 라이브러리를 모두 삭제하는 명령이다.

.\vcpkg remove boost-uninstall --triplet x64-windows --recurse

OpenCV 설치하기

OpenCV도 Boost 라이브러리와 마찬가지로 설치 환경에 따른 많은 옵션이 있다.
Windows X64 환경에서는 아래와 같이 설치한다.

C:\> vcpkg install opencv:x64-windows

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

div#stuning-header .dfd-stuning-header-bg-container {background-image: url(https://tech.sangron.com/wp-content/uploads/sites/2/2018/11/cpp_wallpaper_background.jpg);background-color: #3f3f3f;background-size: cover;background-position: top center;background-attachment: initial;background-repeat: no-repeat;}#stuning-header div.page-title-inner {min-height: 350px;}