Freigeben über


Auswählen von LLVM-Features

Installieren einer Bibliothek

Wir werden llvm als Beispiel betrachten. Sie können es mit folgendem Installieren installieren:

> vcpkg install llvm

oder über ein Manifest mit:

{
  "dependencies": ["llvm"]
}

Wenn llvm jetzt installiert ist, können wir Folgendes ausführen:

> installed\x86-windows\bin\llc.exe --version

Wir sehen Folgendes:

  Registered Targets:
    x86    - 32-bit X86: Pentium-Pro and above
    x86-64 - 64-bit X86: EM64T and AMD64

Installieren zusätzlicher Features

Aber llvm unterstützt viele weitere Ziele, von ARM bis SPARC zu SystemZ. Allerdings beinhaltet unsere aktuelle Installation nicht ARM als Ziel; Daher müssen wir lernen, wie vcpkg es uns ermöglicht, andere LLVM-Ziele zu installieren. Der llvm-Port ermöglicht dies über die "target-*"-Features.

Wenn wir folgendes tun:

> vcpkg search llvm

Wir sehen:

llvm                 10.0.0#6         The LLVM Compiler Infrastructure
llvm[clang]                           Build C Language Family Front-end.
llvm[clang-tools-extra]               Build Clang tools.
...
llvm[target-all]                      Build with all backends.
llvm[target-amdgpu]                   Build with AMDGPU backend.
llvm[target-arm]                      Build with ARM backend.
...

Wir können alle diese Ziele mithilfe der Syntax des Installationsfeatures installieren:

> vcpkg install llvm[target-arm] # Installs LLVM with the ARM target
{
  "dependencies": [{ "name": "llvm", "features": ["target-arm"] }]
}

Abmelden von Standardfeatures

Der llvm-Port enthält einige Standardfeatures, die Sie als Benutzer möglicherweise nicht benötigen: Beispielsweise ist das clang Feature standard, was bedeutet, dass vcpkg install llvm auch Clang erstellt und installiert wird. Wenn Sie einen Compiler schreiben, der LLVM als Back-End verwendet, sind Sie wahrscheinlich auch nicht daran interessiert, Clang zu installieren, und wir können dies tun, indem wir Standardfeatures mit dem speziellen core "Feature" deaktivieren:

> vcpkg install llvm[core,target-arm] # removing the default-feature with "core" also removes all of the default targets you get

oder in Manifestdateien:

{
  "dependencies": [{
    "name": "llvm",
    "default-features": false,
    "features": ["target-arm"]
  }]
}