vs2008을 10여년간 사용하다 vs2019를 사용하게 되어 boost를 설치 하려고 알아보니 vcpkg라는것이 있다고 하여

이런 저런 삽질을 진행한 결과를 정리한다.


참고 문서는 MS공식 문서가 제일 좋다.

vcpkg: a C++ package manager for Windows, Linux, and MacOS


설치

vcpkg를 설치할 경로에서 파워쉘을 실행하고 다음의 명령을 실행한다. GIT이 설치되어 있어야한다.


// vcpkg  저장소 clone
git clone https://github.com/microsoft/vcpkg.git
// 빌드
PS>./bootstrap-vcpkg.bat


빌드가 완료되면 vcpkg를 실행해볼 수 있다.

// 사용가능 패키지 검색
vcpkg search boost

//  visual studio 연동 설정
vcpkg integrate install

// 파워쉘에서 자동완성을 지원해준다고 하는데 어떻게 사용하는지 아직 확인 불가
vcpkg integrate powershell


이렇게 환경을 구성했으면 triplet 에 대해서 알아야 한다.


x86-windows : dll 로 사용한다.

x86-windows-static : lib로 사용한다 MT 옵션 컴파일

x86-windows-static-md : lib로 사용한다. MD 옵션 컴파일


boost를 static link 하려면 다음과 같이 설치 한다.

vcpkg install boost:x86-windows-static-md


Visual studio 에서는 x86-windows가 기본값으로 되어 있어서 static 으로 사용하려면 vcxproj 파일을 열고 다음과 같이 설정을 추가 해야한다.

<PropertyGroup Label="Globals"> 항목을 찾아서 아래쪽에 추가한다.


<PropertyGroup Label="Globals">
  <!-- .... -->
  <VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
  <VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>

처음에 dll 모드로 boost를 사용했더니 memory leak이 발생하였는데 이런때는

링커-입력-지연 로드된 DLL 에 boost의 dll을 지정해주면 된다.

오픈소스들중에 이런 문제가 종종 있는것 같다.

참고 링크 : https://stackoverflow.com/questions/9232837/how-to-remove-memory-leaks-between-opencv-1-1-and-mfc-6-0-without-linking-mfc-as


프로젝트 configuration이 Debug, Release 가 아닌 다른 이름이라면 이에 대한 설정도 별도로 해야 한다.

https://github.com/microsoft/vcpkg/blob/master/docs/about/faq.md#can-i-get-vcpkg-integration-for-custom-configurations


<PropertyGroup>
  <VcpkgConfiguration Condition="'$(Configuration)' == 'MyRelease'">Release</VcpkgConfiguration>
</PropertyGroup>



ps.

파워쉘 자동완성 기능은 윈도우 기본 탑재 파워쉘에서는 정상 동작 하지 않는다.

powershell7 을 설치 해보니 자동 완성이 잘 동작 했다.


2020.06 버전 부터는 static link 사용 방법이 달라졌다.