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
- Visual Studio Code
- Kompilator języka C++
- Windows 7 lub nowszy
1 — Konfigurowanie programu vcpkg
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.
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.
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.
Zrzut ekranu przedstawiający widok rozszerzenia programu Visual Studio Code z rozszerzeniem CMake Tools
4 — Konfigurowanie zmiennych środowiskowych
- 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"
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.
- 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
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)
: szukafmt
biblioteki przy użyciu pliku konfiguracji narzędzia CMake. SłowoREQUIRED
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 plikuhelloworld.cpp
źródłowego .target_link_libraries(HelloWorld PRIVATE fmt::fmt)
: określa, żeHelloWorld
plik wykonywalny powinien łączyć się z bibliotekąfmt
. SłowoPRIVATE
kluczowe wskazuje, żefmt
jest wymagane tylko do kompilowaniaHelloWorld
i nie powinno być propagowane do innych projektów zależnych.
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"
}
}
]
}
- 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
CMake: Build
Uruchom polecenie projektu, przechodząc do palety poleceń w palecie poleceń w widoku > palety poleceń
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.
Zrzut ekranu przedstawiający wybieranie ustawień wstępnych w poleceniu kompilacji narzędzia CMake w programie Visual Studio Code.
- 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.json
usługi , zobacz dokumentację referencyjną: