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 사용 방법이 달라졌다.


윈도우 10 2004 버전에서 WSL2를 지원하면서 docker desktop에서도 지원을 시작 하였다.


WSL2를 사용할 계획이 있다면 별도의 활성화 명령을 실행시키지 말고 도커설치를 권장합니다.

아주 편리하게 WSL2가 활성화 됩니다.


윈도우 10 버전이 2004 인지 확인한다. 아마도 시스템이 hyper-v 구동이 되는 가상화 지원이 되어야 할 것 같습니다.


설치 파일을 다운로드 받고 설치를 시작한다.
https://www.docker.com/products/docker-desktop


WSL2 체크를 확인한다.

설치 진행중

설치가 완료되면 재시작

로그인 하면 도커가 구동된다.

WSL2 커널 업데이트 안내 창이 실행되면 업데이트를 진행한다.


업데이트 하고 재부팅을 하면 도커가 구동되고 사용법이 안내된다. 이를 따라해보려면 GIT이 설치 되어 있어야한다.


버튼을 클릭하면 명령이 입력되어 실행된다.

받은 소스를 기반으로 이미지 빌드

빌드된 이미지 실행

localhost로 접속이 된다.


구동중인 컨테이너를 관리할 수 있다.


항상 도커를 사용할 계획이 아니라면 Start Docker Desktop when you log in 체크를 해제한다.



윈도우 10 2004 버전에서 home 버전에서도 wsl2가 된다는 소식에 hyper-v로 설치를 했다.

그런데 고급세션이 활성화가 안되는 것이다. 뭔가 설정을 빼먹은게 아닐까 싶어서 검색을 해봤는데

딱히 답이 없었다.

 

오늘 pro 버전을 설치 해보니 home 버전이라 안되는것을 확인 하였다.

 

TLDR;

hyper-v의 Guest가 윈도우10 home 버전에서는 고급세션 사용이 되지 않는다.


Guest에 처음 접속은 비활성 상태에서 실행된다

기본 연결은 고급세션이 비활성 상태

그런데 Guest가 pro 버전이면 다음과 같이 고급세션 연결 창이 실행된다.



고급세션 활성화 상태

검색해보니 Guest가 리눅스 버전인 경우 고급세션 사용이 가능하다는 글을 봤다.

따라서 윈도우 home에서만 제약이 있는것 같다.

만약 고급세션이 안되면 hyper-v 설정을 확인한다.


고급세션 모드 허용 체크!