C++, MFC

[C++/MFC] vcpkg를 사용해서 프로젝트에 라이브러리 세팅하는 방법

dev_drive 2022. 11. 30. 16:24
반응형

 

vcpkg란?

vcpkg는 라이브러리 관리를 위한 C/C++ 패키지 관리 툴로, vcpkg를 이용해서 오픈소스 라이브러리를 다운로드하고 빌드해서 프로젝트에 간편하게 불러올 수 있습니다.
 

 


# vcpkg 다운로드 

1. 파워쉘을 관리자 권한으로 실행합니다.  (cmd로 해도 상관없습니다)

 
2. vcpkg 저장소를 복제할 디렉토리로 이동합니다.

cd s:\

git clone하면 s:\하위에 vcpkg디렉토리가 자동 생성되니 폴더를 따로 만들어줄 필요는 없습니다.
 
3. vcpkg 저장소를 복제합니다. 

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

※ 여기서 오류가 발생하면 Git이 설치되어 있지 않은 것이니 https://github.com/Microsoft/vcpkg 링크에서 수동으로 다운받던가 Git설치 후 진행하시면 됩니다. 
 
 
4. vcpkg가 설치된 경로로 이동하고 부트스트랩 배치파일로 vcpkg를 빌드합니다.

cd s:\vcpkg\
.\bootstrap-vcpkg.bat

 
5. Visual Studio에서 사용 가능하도록 통합 설치합니다.

.\vcpkg integrate install

 
 

# 라이브러리 설치

※ 라이브러리 검색

.\vcpkg search boost
.\vcpkg search cryptopp
.\vcpkg search opencv
...

위와 같이 오픈소스 라이브러리가 존재하는지 라이브러리 이름으로 검색해서 확인할 수 있습니다. 
 
 
※ MT 방식 (다중 스레드)

.\vcpkg install cryptopp:x86-windows-static
.\vcpkg install cryptopp:x64-windows-static

 
MD방식 (다중 스레드 DLL)

.\vcpkg install cryptopp:x86-windows-static-md
.\vcpkg install cryptopp:x64-windows-static-md

 
※ 아시겠지만 cryptopp가 라이브러리 이름, x86이 32bit, x64가 64bit 입니다. 
※ 만약 설치 중 에러가 발생하면 install 대신 remove를 입력해서 라이브러리를 지우고 다시 설치해보세요.
 
 
 

# Visual Studio에 프로젝트 설정

vcpkg 세팅 후에 프로젝트 속성에 들어가면 vcpkg 항목이 생성됩니다. 
여기서 다른건 크게 건들 필요 없고 Triplet과 Vcpkg Configuration만 설정해줍니다. 
 
※ Triplet 설정

x86-windows-static
x86-windows-static-md
x64-windows-static
x64-windows-static-md

설치한 라이브러리와 프로젝트 설정에 맞게 알맞은 값을 입력해줍니다. 
 
 
※ Vcpkg Configuration

Debug
Release

프로젝트 구성에 맞게 디버그, 릴리즈 값을 입력해줍니다.
 
 
 

※ Visual Studio에서 vcpkg를 사용할 수 없다면 영어 언어팩을 설치 후 다시 시도해주세요.

 
 
 

# 라이브러리 사용

 따로 추가 종속성 설정이나 포함디렉토리 설정 없이 위와 같이 필요한 헤더만 include하면 라이브러리를 사용할 수 있습니다. 

 

※ 설치한 라이브러리는 .\vcpkg\packages 밑에 생성되니 include 밑에 있는 헤더 파일중에 필요한 것들만 포함시켜서 사용하면 되겠습니다. 

 
 
 
 

 error LNK2019: __std_max_element_ 로 시작하는 링크에러가 발생한다면 아래 글을 참고해보세요.

[C++/MFC] vcpkg로 추가한 라이브러리에서 링크 에러 발생 / error LNK2001 : __std_max_element_4

정확한 원인은 파악하지 못했지만 vcpkg로 설치된 라이브러리와 컴파일러와의 버전차이로 발생하는 에러 같습니다. 아마 VS2022를 설치하고 나면 발생하는 에러같은데 저는 다음과 같은 방법으로

dev-drive.tistory.com

 

반응형