게임 서버 이따위로 짜도 됩디다

VCPKG 간단하고 빠르게 알아보기

리차드 전 2021. 2. 2. 21:02

일단 잡설...

 

Microsoft가 개발자 친화적이 되어 가고 있다고 생각한 것은 아마도 Visual Studio Code출시부터가 아닌가 싶다. Code는 기존에 여러 가지 브랜드 제품의 코딩 에디터 시장을 차근차근 점령해 나간 것도 우연이 아닌듯싶고.

 

최근에 log라이브러리를 다시 빌드 하려고 2-3년 전에 했던 방법을 다시 떠올려서 진행 중이었는데...

log4cxx라는 Apache의 오픈소스 중에 하나였고, 이를 Visual Studio에서 빌드하기 위해서는 APR이라든지 openssl이라든지의 오픈소스 라이브러리의 빌드가 필요했고, MS와는 궁합(?)이 맞지 않은 오픈소스 라이브러리들의 빌드 때문에 골치 아플 각오를 하고 있었다. 그런데 검색 도중 VCPKG라는 것을 발견했고 이름부터 심상치 않음을 느끼고 이것저것 파헤쳐 보기 시작했다. 그리고는 MS가 개발자 친화적이 돼가고 있다는 대표적 증거는 Visual Studio Code가 아니라 VCPKG구나라고 결론을 내기 시작했다.

마이크로소프트 팀 블로그에 따르면 윈도 기반 개발자들이 겪는 문제들중에 하나가 바로 오픈소스나 기타 라이브러리들을 가져와서 사용할 때 느끼는 불편함 들이라는 피드백을 받아 vcpkg를 만들게 되었다고 한다. 그리고 지속적으로 개선을 해 나갈 테니 많은 피드백과 라이브러리 contribution을 해달라고 했다. 

 

VCPKG = Visual C++ PacKaGe (Manager) ?

 

약간은 다른 개념이지만, MacOS의 brew나 리눅스의 apt-get 같은 패키지 관리 시스템을 윈도에서도 사용 가능하게 해주는 솔루션으로 보면 된다. vcpkg는 윈도뿐만 아니라 맥이나 리눅스에서도 작동한다.

 

 

준비물 (윈도 기준)

Windows 7 이상

Git

Visual Studio  2015 update3 이후 버전 (+ 반드시 영문 언어팩이 설치되어 있어야 한다.)

 

설치 방법

PS> git clone https://github.com/Microsoft/vcpkg.git
PS> cd vcpkg
PS> ./bootstrap-vcpkg.bat

깃 헙에서 git clone으로 받은 후에 배치 파일을 실행시키면 vcpkg.exe가 생성된다. 이 실행파일이 앞으로 모든 일을 해주실 분(?)이다.

 

어떤 패키지가 있는지 검색하려면 아래와 같은 형식으로 하면 된다.

boost 패키지 검색 결과

Boost는 C++의 유명한 라이브러리이다. ( https://boost.org ) 원래는 해당 홈페이지 방문하여 zip 파일을 다운로드하고, 압축 해제후에 나름대로의 방법으로 빌드를 해서 사용할 수 있었다. 하지만 vcpkg.exe를 이용하면 알아서 최신 버전을 다운받고 알아서 빌드까지 한 후, 사용 가능한 형태(include, bin, lib)로 deploy를 해준다.

 

Boost-core라이브러리를 한번 설치해보자 (설치 중인 화면)

여러 가지 메시지가 출력된 후에 아래와 같이 끝났다.

설치가 완료된 후에는 vcpkg/installed 폴더 밑에 결과물들이 생성되며 Boost-core패키지의 경우 아래와 같이 폴더가 생성된 것을 확인할 수 있다.

 

지금부터 진짜 감동

여기서 vcpkg의 기능에 대해 더 감동적인(?) 부분이 있는데....

이런 3rd Party라이브러리를 사용하여 개발하게 될 때에는 Visual Studio에 프로젝트 설정에서 include나 lib 디렉터리를 하나씩 다 설정해줘야 했었다. 하지만 vcpkg는 아래 명령어 한 개로 Visual Studio로 생성하는 모든 프로젝트에 기본적으로 추가되도록 설정할 수 있다. 한 번만 실행해두면 Visual Studio로 생성하는 모든 프로젝트에 자동으로 설정이 지정될 뿐만 아니라 vcpkg install명령어로 추가되는 패키지도 자동으로 Visual Studio에서 인식 가능하게 된다.

PS> ./vcpkg integrate install

 

해당 명령 실행 후 Visual Studio에서 아래와 같이 코딩할 경우, 인텔리 센스부터 빌드까지 문제없이 진행된다.

apache의 log4cxx를 설치하기 위해서 우연찮게 발견한 vcpkg. 앞으로 유용하게 많이 쓰일 것으로 기대된다.

 

vcpkg라는 게 2017년쯤 나온 것 같은데 그걸 이제야 알았다니.. 세상은 빠르게 변하고 많은 것들이 생겨나는데 쫓아가기 바쁘기만 한 것 같다.