Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku pokazano, jak utworzyć program "Hello World" w języku C++, który używa biblioteki za pomocą fmt narzędzia CMake i narzędzia vcpkg. Zainstalujesz zależności, skonfigurujesz, skompilujesz i uruchomisz prostą aplikację.
Wymagania wstępne
- Terminal
- Kompilator języka C++
- CMake
- Usługa Git
Uwaga
W przypadku użytkowników systemu Windows kompilator MSVC (Microsoft Visual C++) programu Visual Studio jest wymaganym kompilatorem do programowania w języku C++.
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.gitRejestr 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
vcpkgkatalogu i wykonaj skrypt bootstrap:cd vcpkg && bootstrap-vcpkg.batcd vcpkg; .\bootstrap-vcpkg.batcd vcpkg && ./bootstrap-vcpkg.shSkrypt bootstrap wykonuje testy wymagań wstępnych i pobiera plik wykonywalny vcpkg.
I już! Narzędzie vcpkg jest skonfigurowane i gotowe do użycia.
2 — Konfigurowanie projektu
Skonfiguruj zmienną
VCPKG_ROOTśrodowiskową.export VCPKG_ROOT=/path/to/vcpkg export PATH=$VCPKG_ROOT:$PATHUwaga
Ustawienie zmiennych środowiskowych przy użyciu
exportpolecenia wpływa tylko na bieżącą sesję powłoki. Aby zmienić tę zmianęexportna stałe między sesjami, dodaj polecenie do skryptu profilu powłoki (np.~/.bashrclub~/.zshrc).set "VCPKG_ROOT=C:\path\to\vcpkg" set PATH=%VCPKG_ROOT%;%PATH%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"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.
Ustawienie
VCPKG_ROOTinformuje vcpkg, gdzie znajduje się wystąpienie vcpkg. Dodanie go w celuPATHzapewnia, że można uruchamiać polecenia vcpkg bezpośrednio z poziomu powłoki.Utwórz katalog projektu.
mkdir helloworld && cd helloworld
3 — Dodawanie zależności i plików projektu
Utwórz plik manifestu i dodaj
fmtzależność.Najpierw utwórz plik manifestu (
vcpkg.json) w katalogu projektu, uruchamiającvcpkg newpolecenie z poziomuhelloworldkatalogu:vcpkg new --applicationNastępnie dodaj
fmtzależność:vcpkg add port fmtPowinien
vcpkg.jsonwyglądać następująco:{ "dependencies": [ "fmt" ] }Jest to plik manifestu. Narzędzie vcpkg odczytuje plik manifestu, aby dowiedzieć się, jakie zależności mają być instalowane i integrowane z programem CMake w celu zapewnienia zależności wymaganych przez projekt.
Plik domyślny
vcpkg-configuration.jsonwprowadza ograniczenia linii bazowej , określając minimalne wersje zależności, których powinien używać projekt. Modyfikowanie tego pliku wykracza poza zakres tego samouczka, ale odgrywa kluczową rolę w definiowaniu ograniczeń wersji dla zależności projektu. W związku z tym, mimo że nie jest to absolutnie konieczne w tym samouczku, dobrym rozwiązaniem jest dodanievcpkg-configuration.jsonkontroli źródła w celu zapewnienia spójności wersji w różnych środowiskach deweloperskich.Utwórz pliki projektu.
CMakeLists.txtUtwórz plik 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)Teraz podzielmy działanie każdego wiersza w
CMakeLists.txtpliku: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): szukafmtbiblioteki przy użyciu pliku konfiguracji narzędzia CMake. SłowoREQUIREDkluczowe 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, żeHelloWorldplik wykonywalny powinien łączyć się z bibliotekąfmt. SłowoPRIVATEkluczowe wskazuje, żefmtjest wymagane tylko do kompilowaniaHelloWorldi nie powinno być propagowane do innych projektów zależnych.
helloworld.cppUtwórz plik z następującą zawartością:#include <fmt/core.h> int main() { fmt::print("Hello World!\n"); return 0; }W tym
helloworld.cpppliku<fmt/core.h>nagłówek jest dołączany do korzystania zfmtbiblioteki. Następniemain()funkcja wywołujefmt::print()polecenie , aby wyświetlić komunikat "Hello World!" do konsoli.
4 — Kompilowanie i uruchamianie projektu
Uruchamianie konfiguracji narzędzia CMake
Narzędzie CMake może automatycznie łączyć biblioteki zainstalowane przez narzędzie vcpkg, gdy
CMAKE_TOOLCHAIN_FILEjest ustawione na użycie niestandardowego łańcucha narzędzi vcpkg. Może to być skompilowane przy użyciu plików ustawień wstępnych narzędzia CMake.Utwórz następujące pliki w
helloworldkatalogu: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>" } } ] }Plik
CMakePresets.jsonzawiera jedno ustawienie wstępne o nazwie "vcpkg", które ustawia zmiennąCMAKE_TOOLCHAIN_FILE. PlikCMakeUserPresets.jsonustawia zmiennąVCPKG_ROOTśrodowiskową, aby wskazywała ścieżkę bezwzględną zawierającą lokalną instalację programu vcpkg. Zaleca się, aby nie zaewidencjonowaćCMakeUserPresets.jsonsystemów kontroli wersji.Na koniec skonfiguruj kompilację przy użyciu narzędzia CMake:
cmake --preset=defaultKompilowanie projektu
Uruchom:
cmake --build buildUruchamianie aplikacji
Na koniec uruchom plik wykonywalny, aby zobaczyć aplikację w działaniu:
./build/HelloWorld Hello World!.\build\HelloWorld.exe Hello World!