[C/C++] vcpkg 설치 방법 on Windows 11 x64

pikamon·2024년 6월 8일
0

C/C++

목록 보기
10/10

1. vcpkg란?

vcpkg는 Microsoft에서 제공하는 C/C++ 패키지 관리자이다.

Python의 pip, Node.js의 npm과 같이, C/C++ 환경에서 용이하게 패키지를 설치/삭제할 때 사용한다.

간혹 윈도우 환경에서 C/C++로 개발하는 중 필요한 라이브러리가 생길 시, 공식 홈페이지에 들어가서... 압축 파일을 다운받아서... 경로를 어쩌고... 했는데 안되고...
이런 복잡하고 괴로운 과정을 한 번쯤 겪어봤을 것이다.

이를 해결하기 위해 vcpkg를 사용한다.

2. vcpkg 설치 방법

1. vcpkg 다운로드

아래 공식 Github 링크에 들어간다.
https://github.com/microsoft/vcpkg

가운데 초록색 Code 버튼을 누르고 아래 Download/ZIP 버튼을 누른다.

그러면 zip 파일이 다운로드된다. 압축을 풀고 폴더 안에서 명령 프롬프트를 열어 아래 명령어를 실행한다.

.\bootstrap-vcpkg.bat

그럼 아래와 같이 설치된다.

2. 환경 변수 등록

압축 해제한 폴더를 환경 변수에 등록해야 하는데, 원하는 위치가 있다면 폴더를 해당 위치로 이동시킨다.

필자는 현재 바탕 화면에 vcpkg-master 라는 이름으로 되어있는데, C:\ 밑에 vcpkg 라는 이름으로 옮겼다고 해보자.

그럼 위치된 경로는 아래와 같다.

C:\vcpkg

이 경로를 내 PC 우클릭 > 속성 > 고급 시스템 설정 > 고급 > 환경 변수 에 들어가서 시스템 환경 변수에 등록한다.

그리고 명령 프롬프트를 실행하여 아래 명령어 입력 시 정상 동작하는지 확인한다.

vcpkg --version

위와 같이 버전이 정상적으로 출력된다면, 아래의 명령어를 입력하여 vcpkg의 위치를 전역 경로로 등록해준다.

vcpkg integrate install

그러면 아래와 같이 출력되는데,

CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake"

이는 vcpkg toolchain 파일 경로가 위와 같이 설정되었기 때문에, CMake 프로젝트에서 vcpkg 패키지를 불러다 쓰려면 빌드 시 위의 내용이 들어가야 한다는 뜻이다.

3. vcpkg 명령어

vcpkg 패키지 설치/삭제/조회 명령어는 아래와 같다.

  1. 패키지 설치: vcpkg install [패키지명]
  2. 패키지 삭제: vcpkg remove [패키지명]
  3. 설치된 패키지 조회: vcpkg list

3-1. vcpkg install

curl이 필요하여 설치한다고 가정해보자. 아래의 명령어를 입력한다.

vcpkg install curl

그러면 아래와 같이 현재 플랫폼에 맞는 패키지가 설치되는 것을 볼 수 있다.

3-2. vcpkg remove

반대로 패키지를 잘못 설치했거나 불필요해졌을 때, 아래의 명령어를 입력한다.

vcpkg remove curl

그러면 아래와 같이 삭제되는 것을 볼 수 있다.

3-3. vcpkg list

현재 vcpkg에 설치된 패키지 목록을 보려면 아래의 명령어를 입력한다.

vcpkg list

그러면 아래와 같이 설치된 패키지 목록을 볼 수 있다.

4. Visual Studio Code 연동

vcpkg로 설치한 패키지를 VSCode에서 사용해보자.

보통 CMake를 사용하여 빌드 시스템을 구성하는 게 일반적이라고 한다. 따라서 프로젝트 내에 CMakeLists.txt를 만들어 설정하여야 한다.

4-1. VSCode Extension 설치

필요한지 잘 모르겠는데, 두 개 설치해준다.

  • C/C++ (Microsoft)
  • CMake Tools (Microsoft)

1. Microsoft C/C++

C/C++은 아래와 같다.

2. Microsoft CMake Tools

CMake Tools는 아래와 같다.

4-2. CMake 프로젝트 구성

먼저 임의의 폴더를 만들고 VSCode에서 불러오자.

예) test-vcpkg

mkdir test-vcpkg
cd test-vcpkg

예제 코드를 작성한다. curl를 통해 https를 요청하고 응답받는 코드이다.

  • main.cpp
#include <curl/curl.h> // This will be imported from vcpkg.
#include <iostream>

int main(void) {
    CURL* curl;
    CURLcode res;

    // Initialize curl
    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    // Check if curl was initialized correctly
    if (!curl) {
        std::cerr << "curl_easy_init() failed" << std::endl;
        curl_global_cleanup();
        return 1;
    }

    // Set the URL to send the request to
    curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com");

    // Perform the request
    res = curl_easy_perform(curl);
    std::cout << std::endl;

    // Check if the request was successful
    if (res != CURLE_OK) {
        std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
    } else {
        std::cout << "HTTPS request succeeded" << std::endl;
    }

    // Clean up
    curl_easy_cleanup(curl);
    curl_global_cleanup();

    return 0;
}

이어서 프로젝트 폴더 내에 CMakeLists.txt 파일을 만든다.
파일 안에서 vcpkg 툴체인 설정, curl 패키지 조회, 라이브러리 링크를 해준다.

  • CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(test-vcpkg)

# Set the path to the vcpkg toolchain file
set(CMAKE_TOOLCHAIN_FILE "C:/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")

# Set C++ standard
set(CMAKE_CXX_STANDARD 17)

# Find the package
find_package(curl CONFIG REQUIRED)

# Add the executable
add_executable(test-vcpkg main.cpp)

# Link the libraries
target_link_libraries(test-vcpkg PRIVATE CURL::libcurl)

마지막으로 CMake에서 사용할 빌드 시스템을 지정해주어야 하는데, 프로젝트 내에 .vscode 폴더를 생성하고, 그 안에 settings.json 파일을 생성하여 아래 내용을 입력한다.

  • .vscode/settings.json
{
    "cmake.configureSettings": {
      "CMAKE_TOOLCHAIN_FILE": "C:/vcpkg/scripts/buildsystems/vcpkg.cmake"
    },
    "cmake.generator": "Visual Studio 17 2022",  // MSBuild
    "files.associations": {
        "ostream": "cpp"
    }
}

필자는 PC에 빌드 시스템으로 Visual Studio Build Tools가 설치되어 있어 cmake.generator에 위 내용을 입력했으나, 각자의 환경에 따라 Ninja, MinGW Makefiles 등 원하는 빌드 시스템을 입력하면 된다.

4-3. Configuration 빌드 및 실행

프로젝트 구성을 제대로 했다면 아래와 같은 모습일 것이다.

1. CMake Configuration

VSCode 창에서 Ctrl + Shift + P를 입력한 후 cmake configuration 이라고 입력 후 엔터를 눌러 실행한다.

cmake configuration

실행하면 아래와 같이 정상적으로 configuration 된 것을 볼 수 있다.

2. CMake Build

이어서 Ctrl + Shift + P를 입력한 후 cmake build 를 입력하여 프로젝트를 빌드한다.

cmake build

그러면 프로젝트가 정상적으로 빌드되는 것을 볼 수 있다.

3. CMake Run

빌드된 코드를 실행하기 위해 Ctrl + Shift + P를 입력 후 cmake run을 실행한다.

cmake run

그러면 아래와 같이 https 요청에 대한 응답이 오면서 HTTPS request succeeded가 출력된다.

이는 vcpkg로 설치한 curl 라이브러리가 vscode 내 프로젝트에서 정상적으로 링크되어 사용되었다는 뜻이다.

5. 결론

대략 이렇게 사용하면 될 것 같다.

Python pip가 패키지 설치 후 소스에서 import만 해오면 되는 것에 비해, vcpkg는 CMakeLists.txt에 find_packagetarget_link_libraries도 같이 추가해줘야 하기 때문에 조금 더 번거로울 수는 있지만, 직접 써보니 막 그렇게 불편하지도 않은 것 같다. 또 사용하다 보면 익숙해질 것 같다.

profile
개발자입니당 *^^* 깃허브 https://github.com/pikamonvvs

0개의 댓글