자습서: Visual Studio Code에서 CMake를 사용하여 패키지 설치 및 사용

이 자습서에서는 CMake, vcpkg 및 Visual Studio Code와 함께 라이브러리를 fmt 사용하는 C++ "헬로 월드" 프로그램을 만드는 방법을 보여줍니다. 종속성을 설치하고, 간단한 애플리케이션을 구성, 빌드 및 실행합니다.

필수 조건

이 예제에서는 Visual Studio C++ 개발 워크로드에서 C++ MSVC 컴파일러를 사용합니다.

1 - vcpkg 설정

  1. 리포지토리 복제

    첫 번째 단계는 GitHub에서 vcpkg 리포지토리를 복제하는 것입니다. 리포지토리에는 vcpkg 실행 파일을 획득하는 스크립트와 vcpkg 커뮤니티에서 기본 큐레이팅된 오픈 소스 라이브러리의 레지스트리가 포함되어 있습니다. 이렇게 하려면 다음을 실행합니다.

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

    vcpkg 큐레이팅된 레지스트리는 2,000개가 넘는 오픈 소스 라이브러리 집합입니다. 이러한 라이브러리는 vcpkg의 연속 통합 파이프라인에서 함께 작동하도록 유효성을 검사했습니다. vcpkg 리포지토리에는 이러한 라이브러리에 대한 소스 코드가 포함되지 않지만 시스템에 빌드하고 설치하는 레시피 및 메타데이터가 있습니다.

  2. 부트스트랩 스크립트 실행

    이제 vcpkg 리포지토리를 복제했으므로 디렉터리로 이동하여 vcpkg 부트스트랩 스크립트를 실행합니다.

    cd vcpkg && bootstrap-vcpkg.bat
    
    cd vcpkg; .\bootstrap-vcpkg.bat
    
    cd vcpkg && ./bootstrap-vcpkg.sh
    

    부트스트랩 스크립트는 필수 구성 요소 검사 수행하고 vcpkg 실행 파일을 다운로드합니다.

    정말 간단하죠. vcpkg가 설정되고 사용할 준비가 된 것입니다.

2 - Visual Studio Code 확장 설치

확장 보기로 이동하고 C++ 확장을 설치 합니다. 이렇게 하면 C++ IntelliSense 및 코드 탐색이 가능합니다.

C++ Visual Studio Code 확장 설치

C++ 확장이 있는 Visual Studio Code 확장 보기의 스크린샷

CMake 도구 확장을 설치합니다. 이렇게 하면 Visual Studio Code에서 CMake를 지원할 수 있습니다.

CMake Tools Visual Studio Code 확장 설치

CMake 도구 확장이 있는 Visual Studio Code 확장 보기 스크린샷

3 - vcpkg 설정

  1. 환경 변수를 VCPKG_ROOT 구성합니다.

Visual Studio Code에서 새 터미널 열기: 터미널 > 새 터미널

다음 명령을 실행합니다.

$env:VCPKG_ROOT="C:\path\to\vcpkg"
$env:PATH="$env:VCPKG_ROOT;$env:PATH"

vcpkg 환경 변수 설정

visual Studio Code 터미널에서 VCPKG_ROOT 설정하고 PATH에 추가하는 스크린샷

set "VCPKG_ROOT=C:\path\to\vcpkg"
set PATH=%VCPKG_ROOT%;%PATH%
VCPKG_ROOT=/c/path/to/vcpkg
PATH=$PATH:$VCPKG_ROOT

설정을 VCPKG_ROOT 사용하면 Visual Studio에서 vcpkg 인스턴스를 찾을 수 있습니다. PATH 셸에서 직접 vcpkg 명령을 실행할 수 있도록 추가합니다.

  1. 매니페스트 파일을 생성하고 종속성을 추가합니다.

다음 명령을 실행하여 vcpkg 매니페스트 파일(vcpkg.json)을 만듭니다.

vcpkg new --application

vcpkg new 명령은 프로젝트 디렉터리에 파일과 vcpkg-configuration.json 파일을 추가 vcpkg.json 합니다.

fmt 패키지를 종속성으로 추가합니다.

vcpkg add port fmt

vcpkg.json 이제 다음을 포함해야 합니다.

{
  "dependencies": [
    "fmt"
  ]
}

매니페스트 파일입니다. vcpkg는 매니페스트 파일을 읽고 설치할 종속성을 알아보고 MSBuild와 통합하여 프로젝트에 필요한 종속성을 제공합니다.

생성된 vcpkg-configuration.json 파일은 프로젝트의 종속성에 최소 버전 제약 조건을 배치하는 기준을 도입합니다. 이 파일 수정은 이 자습서의 범위를 벗어납니다. 이 자습서에서는 적용되지 않지만 파일을 소스 제어에 유지 vcpkg-configuration.json 하여 다양한 개발 환경에서 버전 일관성을 유지하는 것이 좋습니다.

3 - 프로젝트 파일 설정

다음 콘텐츠를 사용하여 CMakeLists.txt 파일을 만듭니다.

cmake_minimum_required(VERSION 3.10)

project(HelloWorld)

find_package(fmt CONFIG REQUIRED)

add_executable(HelloWorld helloworld.cpp)

target_link_libraries(HelloWorld PRIVATE fmt::fmt)

이제 파일의 각 줄이 CMakeLists.txt 수행하는 작업을 세분화해 보겠습니다.

  • cmake_minimum_required(VERSION 3.10): 프로젝트를 빌드하는 데 필요한 CMake의 최소 버전이 3.10임을 지정합니다. 시스템에 설치된 CMake 버전이 이 버전보다 낮으면 오류가 생성됩니다.
  • project(HelloWorld): 프로젝트의 이름을 "HelloWorld"로 설정합니다.
  • find_package(fmt CONFIG REQUIRED): CMake 구성 파일을 사용하여 라이브러리를 찾 fmt 습니다. REQUIRED 키워드(keyword) 패키지를 찾을 수 없는 경우 오류가 생성되도록 합니다.
  • add_executable(HelloWorld main.cpp): 소스 파일 main.cpp에서 빌드된 "HelloWorld"라는 실행 가능한 대상을 추가합니다.
  • target_link_libraries(HelloWorld PRIVATE fmt::fmt): 실행 파일이 라이브러리에 HelloWorld 연결 fmt 되도록 지정합니다. PRIVATE 이 키워드(keyword) 빌드 HelloWorld 에만 필요하며 다른 종속 프로젝트로 전파해서는 안 됨 fmt 을 나타냅니다.

다음 콘텐츠를 사용하여 helloworld.cpp 파일을 만듭니다.

#include <fmt/core.h>

int main()
{
    fmt::print("Hello World!\n");
    return 0;
}

helloworld.cpp 파일에서 <fmt/core.h> 헤더는 라이브러리를 사용하기 fmt 위해 포함됩니다. 그런 다음 함수는 main() 콘솔에 "헬로 월드!" 메시지를 출력하도록 호출 fmt::print() 합니다.

CMake 프로젝트 시스템에서 vcpkg에서 제공하는 C++ 라이브러리를 인식할 수 있도록 하려면 도구 체인 파일을 제공해야 vcpkg.cmake 합니다. 이를 자동화하려면 다음 콘텐츠를 사용하여 CMakePresets.json "helloworld" 디렉터리에 파일을 만듭니다.

{
  "version": 2,
  "configurePresets": [
    {
      "name": "vcpkg",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
      }
    }
  ]
}

다음 콘텐츠를 사용하여 "helloworld" 디렉터리에 파일을 만듭니 CMakeUserPresets.json 다.

{
  "version": 2,
  "configurePresets": [
    {
      "name": "default",
      "inherits": "vcpkg",
      "environment": {
        "VCPKG_ROOT": "<path to vcpkg>"
      }
    }
  ]
}

CMakePresets.json 파일은 CMake에 대한 단일 "vcpkg" 사전 설정을 포함하고 변수를 CMAKE_TOOLCHAIN_FILE 설정합니다. CMAKE_TOOLCHAIN_FILE CMake 프로젝트 시스템에서 vcpkg에서 제공하는 C++ 라이브러리를 인식할 수 있습니다. 로컬로 사용하는 동안 CMakeUserPresets.json 소스 CMakePresets.json 제어에 검사 합니다.

4 - 프로젝트 빌드 및 실행

  1. 명령 팔레트 보기 > 에서 CMake: Build 명령 팔레트로 이동하여 프로젝트 명령을 실행합니다.

Visual Studio Code의 CMake 빌드 명령

Visual Studio Code에서 CMake 빌드 명령을 선택하는 스크린샷

default CMake 사전 설정을 선택합니다. 이렇게 하면 vcpkg 도구 체인이 활성화됩니다.

Visual Studio Code에서 CMake 빌드 명령에서 사전 설정 선택

Visual Studio Code의 CMake 빌드 명령에서 사전 설정을 선택하는 스크린샷

  1. 프로젝트 시작

다음 메시지가 표시됩니다.

Hello World!

다음 단계

자세한 vcpkg.json내용은 참조 설명서를 참조하세요.