Qt Creator + CMake + vcpkg

개요

Qt Creator C++ 개발환경에서 vcpkg를 설정하는 방법에 대해 설명하고자 합니다.

먼저 아래 구성요소의 사전 설치가 필요합니다.

  • Qt Creator + MSVC Compiler (MinGW X)

  • CMake (Qt 설치시 같이 가능)

  • vcpkg

 

vcpkg 란?

Python의 PyPI (Python Package Index) 와 유사하게 MS에서 만든 C++ 용 크로스 플랫폼 오픈소스 패키지 관리자 입니다.

[Microsoft vcpkg]


아래는 MS vcpkg 소개 자료입니다.

"vcpkg는 라이브러리를 획득하고 관리하기 위한 무료 C/C++ 패키지 관리자입니다. 1,500개 이상의 오픈 소스 라이브러리 중에서 선택하여 한 번의 단계로 다운로드하고 빌드하거나, 자신의 개인 라이브러리를 추가하여 빌드 프로세스를 간소화할 수 있습니다. Microsoft C++ 팀과 오픈 소스 기여자의 유지 보수를 받습니다."

 

Install vcpkg

설치는 2단계로 진행되며 설치파일이 따로 존재하는 것이 아니라 명령창에서 Git 명령어를 입력하면 그 하위 경로에  vcpkg Repository가 복사됩니다.

따라서 명령 프롬프트 또는 터미널에서 아래 Git 명령어를 실행하면 됩니다. 

단, 전역적 설치의 경우 경로 문제가 발생할 수 도 있으므로 간단한 설치 경로를 만들어 사용하는 것을 추천합니다.

(부연 설명하자면, 아래 예시의 경로에 폴더를 하나 만들고 그 곳에서 명령어 실행)

예) C:\Dev\vcpkg 등

[미리 vcpkg 저장소 경로생성]

 

Step 1. 먼저 vcpkg 저장소를 복사합니다.

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

[vcpkg 명령어 실행 예시]

만약 Git 명령어 실행에 오류가 있다면 git을 설치하고 시스템 환경변수에 등록해야 합니다.

위 링크를 클릭해 설치파일을 다운받아 계속 다음, 다음, 설치가 완료됩니다.

[Git Download]

Git 설치가 완료되면 설치된 경로를 환경변수로 등록합니다.

[사용자 환경변수]

[환경변수 - 새로만들기]

 

Step 2. 부트스트래핑 스크립트를 실행, vcpkg 바이너리 생성

.\vcpkg\bootstrap-vcpkg.bat

이제 vcpkg 설치가 완료되었습니다.

 

만약 잘못된 경로에 vcpkg 저장소가 설치되었다면 그냥 폴더만 삭제하고 다시 위 과정을 반복하면 됩니다.

(앱삭제가 아니라 저장소 폴더만 삭제 OK)


Install libraries for your project

이제 C++ 패키지를 한번 설치해 볼 순서입니다.

문자열 포맷을 편하게 지원하는 fmt를 설치합니다.

패키지 검색은 vcpkg 사이트에서 가능하며, 깃 링크를 제공해 줍니다.

[vcpkg 패키지 검색]

패키지를 찾았으면 아래 명령어로 설치합니다. 

설치하고자 하는 패키지 명을 대괄호 [패키지 이름] 안에 쓰면 됩니다.

vcpkg install [packages to install]

[vcpkg 설치확인]

설치가 잘 진행된 것을 확인 할 수 있습니다.

더불어 특정 환경의 패키지만 필요한 경우, 해당 Package Compatibility를 확인하고 아래와 같이 명령어를 실행하면 됩니다. 

예) 64bit windows platform의 경우만 필요.

vcpkg install [packages to install]:x64-windows

 

만약 Visual Studio를 사용한다면 아래 명령어를 실행해 VS MS-Build와 통합이 가능합니다.

vcpkg integrate install


즉, Visual Studio + vcpkg 환경CMake 링크과정 (TOOLCHAIN 연결) 이 불필요하며, MS-Build에서 vcpkg 링크 및 연결이 자동으로 이루어 집니다.  

 

여기까지는 vcpkg Repo. 설치하는 과정이고, 이제부터 Qt + CMake 환경에서 vcpkg 환경설정에 대해 다루어 보겠습니다.

 

Qt Creator with vcpkg

이제 Qt CreatorC++ 프로젝트를 생성해 vcpkg로 설치한 fmt를 사용해 보겠습니다.


1. Qt C++ 프로젝트 생성

[빈 C++ 프로젝트 생성]

2. CMake Toolchain 설정

[CMake Toolchain 생성]

  • "Projects" - "Initial Configuration" - "Add" File을 선택,

  • "CMAKE_TOOLCHAIN_FILE" Key 생성

  • value는 vcpkg가 설치된 경로의 "scripts/buildsystems/vcpkg.cmake" 

  • 마지막으로 Re-configureation 버튼 클릭.


이제 CMake 설정이 초기화되며 vcpkg의 경로를 인식합니다.


3. CMakeLists.txt 편집

CMakeLists.txt에 아래 두줄을 추가합니다.


 

4. 코드 작성 및 테스트

#include <iostream>
#include <fmt/core.h>
using namespace std;

int main()
{    
    double t=28.7, h=85.3;
    string s = fmt::format("Temperature:{} Humidity:{}", t, h);
    cout << s <<'\n';
    return 0;
}

[vcpkg/fmt]


[실행결과]

Qt Creator에서 vcpkg가 잘 인식되고 사용에 문제가 없습니다.

다만 MinGW 컴파일러는 이유는 알 수 없지만 오류가 발생합니다.


MinGW Error

동일한 코드를 KitMinGW 11.2.0 (64bit)로 변경해 시도해 보았습니다.

오류가 나는데 정확한 이유는 잘 모르겠네요.

CMAKE_TOOLCHAIN_FILE 정상, vcpkg 링크도 잘 걸려있습니다.

 

사실 이 글을 작성한 이유도 이 오류 때문입니다.

저는 VS + MSVC C++ 환경Qt + MinGW C++ 두가지 환경을 C++개발에 사용합니다.

그 이유는 MSVC or GCC Compiler 두 가지 다 필요에 따라 선택해 쓸 수 있기 때문인데, Qt 환경에서 vcpkg를 설치하다 반나절 넘는 시간동안 오류와 싸우다 결국 포기했습니다.

많은 검색을 통해 살펴보았지만 납득할 이유는 찾지 못했습니다.

 

결론은, 저처럼 Qt + MinGW + CMake + vcpkg를 쓰는 분들은 컴파일러 Kit을 MSVC로 변경해 시간낭비 하지 않았으면 하는 바램입니다.

아래는 테스트에 사용한 Qt 개발환경입니다.

  • Qt 6.5.1

  • Qt Creator 10.0.2

  • MinGW 11.2.0 64bit(X), MSVC 2019(O)

  • CMake 3.24.2

     

[vcpkg + MinGW 오류]
 

감사합니다.

댓글

이 블로그의 인기 게시물

Qt Designer 설치하기

C++ 예제 (소켓 서버, 이미지, 파일전송)