영어로 읽기

다음을 통해 공유


자습서: CMake에서 패키지 설치 및 사용

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

필수 조건

참고

Windows 사용자의 경우 Visual Studio의 MSVC(Microsoft Visual C++ 컴파일러)는 C++ 개발에 필요한 컴파일러입니다.

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 - 프로젝트 설정

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

    export VCPKG_ROOT=/path/to/vcpkg
    export PATH=$VCPKG_ROOT:$PATH
    

    참고

    명령을 사용하여 환경 변수를 설정하면 export 현재 셸 세션에만 영향을 줍니다. 세션 간에 이 변경 내용을 영구적으로 변경하려면 셸의 프로필 스크립트(예: 또는~/.zshrc)에 ~/.bashrc 명령을 추가 export 합니다.

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

    참고

    이러한 방식으로 환경 변수를 설정하면 현재 터미널 세션에만 영향을 줍니다. 모든 세션에서 이러한 변경 내용을 영구적으로 변경하려면 Windows 시스템 환경 변수 패널을 통해 설정합니다.

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

    참고

    이러한 방식으로 환경 변수를 설정하면 현재 터미널 세션에만 영향을 줍니다. 모든 세션에서 이러한 변경 내용을 영구적으로 변경하려면 Windows 시스템 환경 변수 패널을 통해 설정합니다.

    설정은 VCPKG_ROOT vcpkg 인스턴스의 위치를 vcpkg에 알려줍니다. PATH 셸에서 직접 vcpkg 명령을 실행할 수 있도록 추가합니다.

  2. 프로젝트 디렉터리를 만듭니다.

    mkdir helloworld && cd helloworld
    

3 - 종속성 및 프로젝트 파일 추가

  1. 매니페스트 파일을 만들고 종속성을 추가 fmt 합니다.

    먼저 디렉터리 내에서 명령을 실행 vcpkg new 하여 프로젝트 디렉터리에 매니페스트 파일(vcpkg.json)을 helloworld 만듭니다.

    vcpkg new --application
    

    다음으로 종속성을 추가 fmt 합니다.

    vcpkg add port fmt
    

    vcpkg.json은 다음과 같습니다.

    {
        "dependencies": [
            "fmt"
        ]
    }
    

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

    기본 vcpkg-configuration.json 파일은 프로젝트에서 사용해야 하는 종속성의 최소 버전을 지정하는 기준 제약 조건을 도입합니다. 이 파일을 수정하는 것은 이 자습서의 범위를 벗어나지만 프로젝트의 종속성에 대한 버전 제약 조건을 정의하는 데 중요한 역할을 합니다. 따라서 이 자습서에 반드시 필요한 것은 아니지만 소스 제어에 추가하여 vcpkg-configuration.json 다양한 개발 환경에서 버전 일관성을 보장하는 것이 좋습니다.

  2. 프로젝트 파일을 만듭니다.

    다음 콘텐츠를 사용하여 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 패키지를 찾을 수 없는 경우 오류가 생성되도록 합니다.
    • add_executable(HelloWorld helloworld.cpp): 소스 파일 helloworld.cpp에서 빌드된 "HelloWorld"라는 실행 가능한 대상을 추가합니다.
    • target_link_libraries(HelloWorld PRIVATE fmt::fmt): 실행 파일이 라이브러리에 HelloWorld 연결 fmt 되도록 지정합니다. 키워드는 PRIVATE 빌드 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() 합니다.

4 - 프로젝트 빌드 및 실행

  1. CMake 구성 실행

    CMake는 vcpkg의 사용자 지정 도구 체인을 사용하도록 설정된 경우 CMAKE_TOOLCHAIN_FILE vcpkg에 의해 설치된 라이브러리를 자동으로 연결할 수 있습니다. CMake 사전 설정 파일을 사용하여 컴파일할 수 있습니다.

    디렉터리 내에 helloworld 다음 파일을 만듭니다.

    CMakePresets.json

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

    CMakeUserPresets.json

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

    파일에는 CMakePresets.json 변수를 설정하는 "vcpkg"라는 단일 사전 설정이 CMAKE_TOOLCHAIN_FILE 포함되어 있습니다. 이 파일은 CMakeUserPresets.json vcpkg의 VCPKG_ROOT 로컬 설치를 포함하는 절대 경로를 가리키도록 환경 변수를 설정합니다. 버전 제어 시스템에 체크 인 CMakeUserPresets.json 하지 않는 것이 좋습니다.

    마지막으로 CMake를 사용하여 빌드를 구성합니다.

    cmake --preset=default
    
  2. 프로젝트 빌드

    다음을 실행합니다.

    cmake --build build
    
  3. 애플리케이션 실행

    마지막으로 실행 파일을 실행하여 작동 중인 애플리케이션을 확인합니다.

    ./build/HelloWorld
    
    Hello World!
    
    .\build\HelloWorld.exe
    
    Hello World!
    

다음 단계