Freigeben über


Lernprogramm: Installieren und Verwenden von Paketen mit CMake in Visual Studio Code

In diesem Lernprogramm erfahren Sie, wie Sie ein C++-Programm "Hallo Welt" erstellen, das die fmt Bibliothek mit CMake, vcpkg und Visual Studio Code verwendet. Sie installieren Abhängigkeiten, konfigurieren, erstellen und führen eine einfache Anwendung aus.

Voraussetzungen

1 – Einrichten von vcpkg

  1. Klonen des Repositorys

    Der erste Schritt besteht darin, das vcpkg-Repository von GitHub zu klonen. Das Repository enthält Skripts zum Abrufen der ausführbaren Datei vcpkg und eine Registrierung kuratierter Open-Source-Bibliotheken, die von der vcpkg-Community verwaltet werden. Führen Sie dazu Folgendes aus:

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

    Die kuratierte vcpkg-Registrierung ist eine Reihe von mehr als 2.000 Open-Source-Bibliotheken. Diese Bibliotheken wurden von den kontinuierlichen Integrationspipelines von vcpkg überprüft, um zusammenzuarbeiten. Während das vcpkg-Repository nicht den Quellcode für diese Bibliotheken enthält, enthält es Rezepte und Metadaten zum Erstellen und Installieren in Ihrem System.

  2. Ausführen des Bootstrap-Skripts

    Nachdem Sie das vcpkg-Repository geklont haben, navigieren Sie zum vcpkg Verzeichnis, und führen Sie das Bootstrap-Skript aus:

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

    Das Bootstrap-Skript führt erforderliche Prüfungen durch und lädt die ausführbare Datei vcpkg herunter.

    Das ist alles! vcpkg ist eingerichtet und einsatzbereit.

2 – Erstellen eines Projektordners

Hinweis

Wenn Sie dieses Lernprogramm in Windows ausführen und MSVC als Compiler verwenden, müssen Sie die Visual Studio Code-Instanz über eine Entwickler-Eingabeaufforderung für VS oder Entwickler-PowerShell für VS starten. Dadurch wird sichergestellt, dass der Compilerpfad und andere Umgebungsvariablen ordnungsgemäß eingerichtet sind.

Erstellen Sie einen Ordner, der die Projektdateien an einem Speicherort Ihrer Wahl enthält. Für dieses Lernprogramm erstellen wir einen Ordner namens "helloworld". Öffnen Sie dann den Ordner mit Visual Studio Code.

mkdir helloworld
code helloworld

3 – Installieren von Visual Studio Code-Erweiterungen

Navigieren Sie zur Erweiterungsansicht, und installieren Sie die C++-Erweiterung. Dies ermöglicht die C++-IntelliSense- und Codenavigation.

Installieren der C++-Visual Studio Code-Erweiterung

Screenshot der Visual Studio Code-Erweiterungsansicht mit C++-Erweiterung

Installieren Sie die Erweiterung " CMake Tools". Dadurch wird die CMake-Unterstützung in Visual Studio Code ermöglicht.

Installieren der CMake Tools Visual Studio Code-Erweiterung

Screenshot der Visual Studio Code-Erweiterungsansicht mit der Erweiterung "CMake-Tools"

4 – Einrichten von Umgebungsvariablen

  1. Konfigurieren Sie die Umgebungsvariable VCPKG_ROOT .

Öffnen eines neuen Terminals in Visual Studio Code: Terminal > New Terminal

Führen Sie die folgenden Befehle aus:

Hinweis

Das Festlegen von Umgebungsvariablen auf diese Weise wirkt sich nur auf die aktuelle Terminalsitzung aus. Um diese Änderungen in allen Sitzungen dauerhaft vorzunehmen, legen Sie sie über den Bereich "Windows System Environment Variables" fest.

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

Einrichten von vcpkg-Umgebungsvariablen

Screenshot der Einrichtung von VCPKG_ROOT und Hinzufügen zu PATH in einem Visual Studio Code-Terminal.

Hinweis

Das Festlegen von Umgebungsvariablen auf diese Weise wirkt sich nur auf die aktuelle Terminalsitzung aus. Um diese Änderungen in allen Sitzungen dauerhaft vorzunehmen, legen Sie sie über den Bereich "Windows System Environment Variables" fest.

Hinweis

Das Festlegen von Umgebungsvariablen auf diese Weise wirkt sich nur auf die aktuelle Terminalsitzung aus. Um diese Änderungen in allen Sitzungen dauerhaft vorzunehmen, legen Sie sie über den Bereich "Windows System Environment Variables" fest.

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

Hinweis

Das Festlegen von Umgebungsvariablen mit dem export Befehl wirkt sich nur auf die aktuelle Shellsitzung aus. Um diese Änderung dauerhaft in Sitzungen vorzunehmen, fügen Sie den export Befehl zum Profilskript Ihrer Shell hinzu (z. B ~/.bashrc . oder ~/.zshrc).

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

Die Einstellung VCPKG_ROOT hilft Visual Studio Code beim Auffinden Ihrer vcpkg-Instanz. PATH Durch das Hinzufügen wird sichergestellt, dass Sie vcpkg-Befehle direkt über die Shell ausführen können.

  1. Generieren Sie eine Manifestdatei, und fügen Sie Abhängigkeiten hinzu.

Führen Sie den folgenden Befehl aus, um eine vcpkg-Manifestdatei (vcpkg.json) im Stammverzeichnis des helloworld Ordners zu erstellen:

vcpkg new --application

Der vcpkg new Befehl fügt eine vcpkg.json Datei und eine vcpkg-configuration.json Datei im Verzeichnis des Projekts hinzu.

Fügen Sie das fmt Paket als Abhängigkeit hinzu:

vcpkg add port fmt

Sie vcpkg.json sollten jetzt Folgendes enthalten:

{
  "dependencies": [
    "fmt"
  ]
}

Dies ist Ihre Manifestdatei. vcpkg liest die Manifestdatei, um zu erfahren, welche Abhängigkeiten installiert und in MSBuild integriert werden sollen, um die für Ihr Projekt erforderlichen Abhängigkeiten bereitzustellen.

Die generierte vcpkg-configuration.json Datei führt einen Basisplan ein, der Mindestversionseinschränkungen für die Abhängigkeiten des Projekts einschließt. Das Ändern dieser Datei liegt außerhalb des Umfangs dieses Lernprogramms. In diesem Lernprogramm ist es zwar nicht anwendbar, aber es empfiehlt sich, die vcpkg-configuration.json Datei unter Quellcodeverwaltung zu halten, um die Versionskonsistenz in verschiedenen Entwicklungsumgebungen sicherzustellen.

5 – Einrichten der Projektdateien

  1. Erstellen der CMakeLists.txt Datei

Erstellen Sie eine neue Datei, die im Stammverzeichnis des Projektordners mit dem folgenden Inhalt benannt CMakeLists.txt ist:

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)

Lassen Sie uns die einzelnen Zeilen in der CMakeLists.txt Datei aufschlüsseln:

  • cmake_minimum_required(VERSION 3.10): Gibt an, dass die zum Erstellen des Projekts erforderliche Mindestversion von CMake 3.10 ist. Wenn die auf Ihrem System installierte CMake-Version niedriger ist als dies, wird ein Fehler generiert.
  • project(HelloWorld): Legt den Namen des Projekts auf "HelloWorld" fest.
  • find_package(fmt CONFIG REQUIRED): Sucht anhand der CMake-Konfigurationsdatei nach der fmt Bibliothek. Das REQUIRED Schlüsselwort stellt sicher, dass ein Fehler generiert wird, wenn das Paket nicht gefunden wird.
  • add_executable(HelloWorld helloworld.cpp): Fügt ein ausführbares Ziel namens "HelloWorld" hinzu, das aus der Quelldatei helloworld.cpperstellt wurde.
  • target_link_libraries(HelloWorld PRIVATE fmt::fmt): Gibt an, dass die HelloWorld ausführbare Datei mit der fmt Bibliothek verknüpft werden soll. Das PRIVATE Schlüsselwort gibt an, dass fmt nur für das Erstellen HelloWorld erforderlich ist und nicht an andere abhängige Projekte weitergegeben werden soll.
  1. Erstellen Sie die helloworld.cpp Datei mit dem folgenden Inhalt:
#include <fmt/core.h>

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

In dieser helloworld.cpp Datei ist der <fmt/core.h> Header für die Verwendung der fmt Bibliothek enthalten. Die main() Funktion ruft fmt::print() dann auf, um die Meldung "Hallo Welt!" an die Konsole auszugeben.

Damit das CMake-Projektsystem C++-Bibliotheken erkennt, die von vcpkg bereitgestellt werden, müssen Sie die vcpkg.cmake Toolkettedatei bereitstellen. Um dies zu automatisieren, erstellen Sie eine CMakePresets.json Datei im Verzeichnis "helloworld" mit dem folgenden Inhalt:

{
  "version": 2,
  "configurePresets": [
    {
      "name": "vcpkg",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
      }
    }
  ]
}
  1. Erstellen Sie CMakeUserPresets.json die Datei im Verzeichnis "helloworld" mit dem folgenden Inhalt:
{
    "version": 2,
    "configurePresets": [
      {
        "name": "default",
        "inherits": "vcpkg",
        "environment": {
          "VCPKG_ROOT": "<path to vcpkg>"
        }
      }
    ]
  }

Diese CMakePresets.json Datei enthält eine einzelne "vcpkg"-Voreinstellung für CMake und legt die CMAKE_TOOLCHAIN_FILE Variable fest. Das CMAKE_TOOLCHAIN_FILE CMake-Projektsystem ermöglicht die Erkennung von C++-Bibliotheken, die von vcpkg bereitgestellt werden. Nur CMakePresets.json soll in die Quellcodeverwaltung eingecheckt werden, während CMakeUserPresets.json sie lokal verwendet werden soll.

6 – Erstellen und Ausführen des Projekts

  1. Führen Sie den CMake: Build Befehl des Projekts aus, indem Sie zur Befehlspalette in der Befehlspalette anzeigen > navigieren

CMake-Buildbefehl in Visual Studio Code

Screenshot der Auswahl des CMake-Buildbefehls in Visual Studio Code.

Wählen Sie die default Voreinstellung "CMake" aus. Dadurch wird die vcpkg-Toolkette aktiviert.

Auswählen von Voreinstellungen im CMake-Buildbefehl in Visual Studio Code

Screenshot der Auswahl der Voreinstellung im CMake-Buildbefehl in Visual Studio Code.

  1. Starten des Projekts

Führen Sie das Programm aus:

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

Die folgende Ausgabe sollte angezeigt werden:

Hello World!

Nächste Schritte

Weitere vcpkg.jsonInformationen finden Sie in unserer Referenzdokumentation: