Udostępnij za pośrednictwem


Samouczek: instalowanie i używanie pakietów za pomocą narzędzia CMake w programie Visual Studio Code

W tym samouczku pokazano, jak utworzyć program "Hello World" języka C++, który korzysta z biblioteki za pomocą fmt narzędzia CMake, programu vcpkg i programu Visual Studio Code. Zainstalujesz zależności, skonfigurujesz, skompilujesz i uruchomisz prostą aplikację.

Wymagania wstępne

1 — Konfigurowanie programu vcpkg

  1. Klonowanie repozytorium

    Pierwszym krokiem jest sklonowanie repozytorium vcpkg z usługi GitHub. Repozytorium zawiera skrypty w celu uzyskania pliku wykonywalnego vcpkg i rejestru wyselekcjonowanych bibliotek open source obsługiwanych przez społeczność programu vcpkg. Aby to zrobić, uruchom polecenie:

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

    Rejestr wyselekcjonowanych vcpkg to zestaw ponad 2000 bibliotek typu open source. Te biblioteki zostały zweryfikowane przez potoki ciągłej integracji vcpkg do współpracy. Chociaż repozytorium vcpkg nie zawiera kodu źródłowego dla tych bibliotek, przechowuje przepisy i metadane do kompilowania i instalowania ich w systemie.

  2. Uruchamianie skryptu bootstrap

    Po sklonowaniu repozytorium vcpkg przejdź do vcpkg katalogu i wykonaj skrypt bootstrap:

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

    Skrypt bootstrap wykonuje testy wymagań wstępnych i pobiera plik wykonywalny vcpkg.

    I już! Narzędzie vcpkg jest skonfigurowane i gotowe do użycia.

2 — Tworzenie folderu projektu

Uwaga

Jeśli korzystasz z tego samouczka w systemie Windows i używasz programu MSVC jako kompilatora, musisz uruchomić wystąpienie programu Visual Studio Code z poziomu wiersza polecenia dla deweloperów programu VS lub programu PowerShell dla deweloperów dla programu VS. Dzięki temu ścieżka kompilatora i inne zmienne środowiskowe są poprawnie skonfigurowane.

Utwórz folder do przechowywania plików projektu w wybranej lokalizacji. W tym samouczku utworzymy folder o nazwie "helloworld". Następnie otwórz folder przy użyciu programu Visual Studio Code.

mkdir helloworld
code helloworld

3 — Instalowanie rozszerzeń programu Visual Studio Code

Przejdź do widoku Rozszerzenia i zainstaluj rozszerzenie C++. Umożliwia to korzystanie z funkcji IntelliSense w języku C++ i nawigacji po kodzie.

instalowanie rozszerzenia programu Visual Studio Code w języku C++

Zrzut ekranu przedstawiający widok rozszerzenia programu Visual Studio Code z rozszerzeniem C++

Zainstaluj rozszerzenie CMake Tools. Umożliwia to obsługę narzędzia CMake w programie Visual Studio Code.

instalowanie rozszerzenia CMake Tools Visual Studio Code

Zrzut ekranu przedstawiający widok rozszerzenia programu Visual Studio Code z rozszerzeniem CMake Tools

4 — Konfigurowanie zmiennych środowiskowych

  1. Skonfiguruj zmienną środowiskową VCPKG_ROOT .

Otwórz nowy terminal w programie Visual Studio Code: Terminal New Terminal >

Uruchom następujące polecenia:

Uwaga

Ustawienie zmiennych środowiskowych w ten sposób wpływa tylko na bieżącą sesję terminalu. Aby wprowadzić te zmiany na stałe we wszystkich sesjach, ustaw je za pomocą panelu Zmienne środowiskowe systemu Windows.

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

Konfigurowanie zmiennych środowiskowych programu vcpkg

Zrzut ekranu przedstawiający konfigurowanie VCPKG_ROOT i dodawanie go do ścieżki w terminalu programu Visual Studio Code.

Uwaga

Ustawienie zmiennych środowiskowych w ten sposób wpływa tylko na bieżącą sesję terminalu. Aby wprowadzić te zmiany na stałe we wszystkich sesjach, ustaw je za pomocą panelu Zmienne środowiskowe systemu Windows.

Uwaga

Ustawienie zmiennych środowiskowych w ten sposób wpływa tylko na bieżącą sesję terminalu. Aby wprowadzić te zmiany na stałe we wszystkich sesjach, ustaw je za pomocą panelu Zmienne środowiskowe systemu Windows.

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

Uwaga

Ustawienie zmiennych środowiskowych przy użyciu export polecenia wpływa tylko na bieżącą sesję powłoki. Aby zmienić tę zmianę export na stałe między sesjami, dodaj polecenie do skryptu profilu powłoki (np. ~/.bashrc lub ~/.zshrc).

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

Ustawienie VCPKG_ROOT pomaga programowi Visual Studio Code zlokalizować wystąpienie programu vcpkg. Dodanie go w celu PATH zapewnia, że można uruchamiać polecenia vcpkg bezpośrednio z poziomu powłoki.

  1. Wygeneruj plik manifestu i dodaj zależności.

Uruchom następujące polecenie, aby utworzyć plik manifestu vcpkg (vcpkg.json) w katalogu głównym helloworld folderu:

vcpkg new --application

Polecenie vcpkg new dodaje vcpkg.json plik i vcpkg-configuration.json plik w katalogu projektu.

fmt Dodaj pakiet jako zależność:

vcpkg add port fmt

Twoje vcpkg.json powinny teraz zawierać:

{
  "dependencies": [
    "fmt"
  ]
}

Jest to plik manifestu. Narzędzie vcpkg odczytuje plik manifestu, aby dowiedzieć się, jakie zależności należy zainstalować i zintegrować z programem MSBuild, aby zapewnić zależności wymagane przez projekt.

Wygenerowany vcpkg-configuration.json plik wprowadza plan bazowy , który nakłada minimalne ograniczenia wersji na zależności projektu. Modyfikowanie tego pliku wykracza poza zakres tego samouczka. Chociaż nie ma zastosowania w tym samouczku, dobrym rozwiązaniem jest zachowanie vcpkg-configuration.json kontroli nad plikiem w celu zapewnienia spójności wersji w różnych środowiskach deweloperskich.

5 — Konfigurowanie plików projektu

  1. CMakeLists.txt Tworzenie pliku

Utwórz nowy plik o nazwie CMakeLists.txt w katalogu głównym folderu projektu z następującą zawartością:

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)

Przeanalizujmy, co każdy wiersz w CMakeLists.txt pliku:

  • cmake_minimum_required(VERSION 3.10): określa, że minimalna wersja narzędzia CMake wymagana do skompilowania projektu to 3.10. Jeśli wersja narzędzia CMake zainstalowana w systemie jest niższa niż ta, zostanie wygenerowany błąd.
  • project(HelloWorld): Ustawia nazwę projektu na "HelloWorld".
  • find_package(fmt CONFIG REQUIRED): szuka fmt biblioteki przy użyciu pliku konfiguracji narzędzia CMake. Słowo REQUIRED kluczowe gwarantuje wygenerowanie błędu, jeśli pakiet nie zostanie znaleziony.
  • add_executable(HelloWorld helloworld.cpp): dodaje element docelowy wykonywalny o nazwie "HelloWorld", skompilowany z pliku helloworld.cppźródłowego .
  • target_link_libraries(HelloWorld PRIVATE fmt::fmt): określa, że HelloWorld plik wykonywalny powinien łączyć się z biblioteką fmt . Słowo PRIVATE kluczowe wskazuje, że fmt jest wymagane tylko do kompilowania HelloWorld i nie powinno być propagowane do innych projektów zależnych.
  1. helloworld.cpp Utwórz plik z następującą zawartością:
#include <fmt/core.h>

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

W tym helloworld.cpp pliku <fmt/core.h> nagłówek jest dołączany do korzystania z fmt biblioteki. Następnie main() funkcja wywołuje fmt::print() polecenie , aby wyświetlić komunikat "Hello World!" do konsoli.

Aby umożliwić systemowi projektu CMake rozpoznawanie bibliotek języka C++ udostępnianych przez narzędzie vcpkg, należy podać vcpkg.cmake plik łańcucha narzędzi. Aby to zautomatyzować, utwórz CMakePresets.json plik w katalogu "helloworld" o następującej zawartości:

{
  "version": 2,
  "configurePresets": [
    {
      "name": "vcpkg",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
      }
    }
  ]
}
  1. Utwórz CMakeUserPresets.json plik w katalogu "helloworld" z następującą zawartością:
{
  "version": 2,
  "configurePresets": [
    {
      "name": "default",
      "inherits": "vcpkg",
      "environment": {
        "VCPKG_ROOT": "<path to vcpkg>"
      }
    }
  ]
}

Ten CMakePresets.json plik zawiera jedno ustawienie wstępne "vcpkg" dla narzędzia CMake i ustawia zmienną CMAKE_TOOLCHAIN_FILE . Narzędzie CMAKE_TOOLCHAIN_FILE umożliwia systemowi projektu CMake rozpoznawanie bibliotek języka C++ udostępnianych przez narzędzie vcpkg. Tylko CMakePresets.json ma być zaewidencjonowany do kontroli źródła, podczas gdy CMakeUserPresets.json ma być używany lokalnie.

6 — Kompilowanie i uruchamianie projektu

  1. CMake: Build Uruchom polecenie projektu, przechodząc do palety poleceń w palecie poleceń w widoku > palety poleceń

Polecenie kompilacji narzędzia CMake w programie Visual Studio Code

Zrzut ekranu przedstawiający wybieranie polecenia kompilacji narzędzia CMake w programie Visual Studio Code.

default Wybierz ustawienie wstępne narzędzia CMake. Umożliwia to łańcuch narzędzi vcpkg.

Wybieranie ustawień wstępnych w poleceniu kompilacji narzędzia CMake w programie Visual Studio Code

Zrzut ekranu przedstawiający wybieranie ustawień wstępnych w poleceniu kompilacji narzędzia CMake w programie Visual Studio Code.

  1. Uruchamianie projektu

Uruchom program:

./build/HelloWorld.exe
./build/HelloWorld

Powinny zostać wyświetlone dane wyjściowe:

Hello World!

Następne kroki

Aby dowiedzieć się więcej na temat vcpkg.jsonusługi , zobacz dokumentację referencyjną: