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 소개
자료입니다.
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 Creator로 C++ 프로젝트를 생성해 vcpkg로 설치한 fmt를 사용해 보겠습니다.
1. Qt C++ 프로젝트 생성
[빈 C++ 프로젝트 생성] |
2. CMake Toolchain 설정
(앞에서 프로젝트 생성시 CMake 빌드시스템으로 설정)
-
"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
동일한 코드를 Kit만 MinGW 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 오류] |
감사합니다.
댓글
댓글 쓰기