Variabili Triplet

Questo articolo descrive le variabili vcpkg disponibili per i file triplet. Un file triplet può includere anche variabili definite dall'utente.

Per una panoramica generale delle funzionalità triplet, vedere la documentazione del concetto di triplette.

Variabili

VCPKG_TARGET_ARCHITECTURE

Specifica l'architettura del computer di destinazione.

Le opzioni valide includono x86, x64, armarm64, arm64ec, ppc64leriscv64s390xloongarch32loongarch64riscv32mips64, e .wasm32

VCPKG_CRT_LINKAGE

Specifica il collegamento CRT desiderato (per MSVC).

Le opzioni valide sono dynamic e static.

VCPKG_LIBRARY_LINKAGE

Specifica il collegamento alla libreria preferito.

Le opzioni valide sono dynamic e static. Le librerie possono ignorare questa impostazione se non supportano il tipo di collegamento preferito.

VCPKG_BUILD_TYPE

È possibile impostare questo valore su release per compilare versioni di sola versione delle porte. Per impostazione predefinita, questo valore è vuoto. Quando questo valore è vuoto vcpkg compila le configurazioni di rilascio e debug delle porte.

VCPKG_CMAKE_SYSTEM_NAME

Specifica la piattaforma di destinazione.

Le opzioni valide includono qualsiasi nome di sistema CMake, ad esempio:

  • Vuoto (Desktop di Windows per motivi legacy)
  • WindowsStore(piattaforma UWP (Universal Windows Platform))
  • MinGW (GNU minimalista per Windows)
  • Darwin (Mac OSX)
  • iOS (iOS)
  • Linux (Linux)
  • Emscripten (WebAssembly)

VCPKG_CMAKE_SYSTEM_VERSION

Specifica la versione del sistema della piattaforma di destinazione.

Questo campo è facoltativo e, se presente, verrà passato alla compilazione come CMAKE_SYSTEM_VERSION.

Vedere anche la documentazione di CMake per CMAKE_SYSTEM_VERSION

VCPKG_CHAINLOAD_TOOLCHAIN_FILE

Specifica un file della toolchain CMake alternativo da usare.

Questo (se impostato) eseguirà l'override di tutte le altre logiche di rilevamento del compilatore. Per impostazione predefinita, un file toolchain viene selezionato dal scripts/toolchains/ file appropriato alla piattaforma.

Nota

Per creare un file toolchain personalizzato, è consigliabile iniziare includendo una toolchain esistente da ${VCPKG_ROOT}/scripts/toolchains ed estenderla. In questo modo, le variabili essenziali impostate dall'eseguibile vcpkg, ad esempio VCPKG_TARGET_ARCHITECTURE, VCPKG_CXX_FLAGSVCPKG_LINKER_FLAGS, e altre variabili, vengono inoltrate a CMake.

Vedere anche la documentazione di CMake per i file toolchain.

VCPKG_CXX_FLAGS

Imposta flag del compilatore aggiuntivi da usare quando non si usa VCPKG_CHAINLOAD_TOOLCHAIN_FILE.

Questa opzione include anche moduli per flag specifici della configurazione e flag del linguaggio C:

  • VCPKG_CXX_FLAGS
  • VCPKG_CXX_FLAGS_DEBUG
  • VCPKG_CXX_FLAGS_RELEASE
  • VCPKG_C_FLAGS
  • VCPKG_C_FLAGS_DEBUG
  • VCPKG_C_FLAGS_RELEASE

Se si imposta VCPKG_CXX_FLAGS, è necessario impostare VCPKG_C_FLAGSanche e viceversa. Lo stesso vale per i flag specifici della configurazione. Queste variabili accettano una stringa delimitata da spazi dei flag del compilatore:

set(VCPKG_CXX_FLAGS "/wd4996 -D_CRT_SECURE_NO_WARNINGS")
set(VCPKG_C_FLAGS "/wd4996 -D_CRT_SECURE_NO_WARNINGS")

VCPKG_LINKER_FLAGS

Imposta flag del linker aggiuntivi da usare durante la creazione di librerie dinamiche ed eseguibili in assenza di VCPKG_CHAINLOAD_TOOLCHAIN_FILE.

Questa opzione include anche moduli per flag specifici della configurazione:

  • VCPKG_LINKER_FLAGS
  • VCPKG_LINKER_FLAGS_DEBUG
  • VCPKG_LINKER_FLAGS_RELEASE

VCPKG_MESON_CONFIGURE_OPTIONS

Impostare opzioni di configurazione meson aggiuntive aggiunte al comando configure (in vcpkg_configure_meson).

Questo campo è facoltativo.

Disponibile anche come variabili e VCPKG_MESON_CONFIGURE_OPTIONS_RELEASE specifiche VCPKG_MESON_CONFIGURE_OPTIONS_DEBUG del tipo di compilazione.

VCPKG_MESON_NATIVE_FILE_RELEASE

Specificare un file dipendente dalla configurazione aggiuntivo come file cross/native meson. Può essere usato per eseguire l'override delle impostazioni fornite da vcpkg perché verrà passato dopo che vengono passati i file incrociati/nativi generati da vcpkg.

Particolarmente utile per fornire le proprie build_machine e host_machine voci.

VCPKG_MESON_NATIVE_FILE_DEBUG

Vedere VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_RELEASE

Vedere VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_DEBUG

Vedere VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_CMAKE_CONFIGURE_OPTIONS

Imposta opzioni di configurazione aggiuntive di CMake aggiunte al comando configure (in vcpkg_cmake_configure).

Questo campo è facoltativo.

Disponibile anche come variabili e VCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE specifiche VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG del tipo di compilazione.

VCPKG_CONFIGURE_MAKE_OPTIONS

Impostare opzioni di configurazione aggiuntive di automake/autoconf aggiunte al comando configure (in vcpkg_configure_make).

Questo campo è facoltativo.

Ad esempio, per ignorare determinati controlli libtool che potrebbero avere esito negativo:

set(VCPKG_CONFIGURE_MAKE_OPTIONS "lt_cv_deplibs_check_method=pass_all")

Disponibile anche come variabili e VCPKG_CONFIGURE_MAKE_OPTIONS_RELEASE specifiche VCPKG_CONFIGURE_MAKE_OPTIONS_DEBUG del tipo di compilazione.

VCPKG_HASH_ADDITIONAL_FILES

Elenco di file da includere nel calcolo degli hash ABI del pacchetto.

Questo campo è facoltativo.

Dichiarare tutti i file che influiscono sul contenuto di un pacchetto e devono essere inseriti nel calcolo dell'hash ABI. Ad esempio:

  • File inclusi (tramite include(filepath)) in triplette personalizzate e toolchain.
  • File definiti in VCPKG_MESON_(NATIVE|CROSS)_FILE_<CONFIG>

Vengono considerati solo il contenuto e l'ordine dei file, i percorsi dei file non influiscono sull'hash ABI.

set(VCPKG_HASH_ADDITIONAL_FILES
  "${CMAKE_CURRENT_LIST_DIR}/file1.cmake"
  "${CMAKE_CURRENT_LIST_DIR}/meson-cross.txt"
)

VCPKG_POST_PORTFILE_INCLUDES

Elenco di file CMake da includere dopo l'esecuzione di portfile.cmake.

Questo campo è facoltativo.

Il contenuto e l'ordine dei file vengono usati per l'hash ABI, i percorsi dei file non influiscono sull'hash ABI.

set(VCPKG_POST_PORTFILE_INCLUDES
  "${CMAKE_CURRENT_LIST_DIR}/file1.cmake"
  "${CMAKE_CURRENT_LIST_DIR}/file2.cmake"
)

VCPKG_DEP_INFO_OVERRIDE_VARS

Nota

Questa sezione illustra una funzionalità sperimentale di vcpkg che può cambiare o essere rimossa in qualsiasi momento.

Sostituisce l'elenco calcolato predefinito dei termini "Supports" di triplet.

Questa opzione (se impostata) sostituirà il set predefinito di termini usati per la valutazione di Platform Expression .

Per altri dettagli, vedere la "supports" documentazione sul campo del file manifesto.

Nota

Questo elenco viene estratto tramite la vcpkg_get_dep_info funzione helper.

VCPKG_DISABLE_COMPILER_TRACKING

Avviso

L'abilitazione di questa opzione non è consigliata perché può causare incompatibilità ABI nei pacchetti binari ripristinati. Per altre informazioni, vedere la documentazione sulla memorizzazione nella cache binaria

Quando questa opzione è impostata su TRUE, ONo 1, il compilatore non verrà rilevato come parte del pacchetto abis.

Ciò causerà il riutilizzo della memorizzazione nella cache binaria da compilatori meno recenti o più recenti.

Variabili specifiche di Windows

VCPKG_ENV_PASSTHROUGH

Indica a vcpkg di consentire variabili di ambiente aggiuntive nel processo di compilazione.

In Windows vcpkg compila pacchetti in un ambiente pulito speciale isolato dal prompt dei comandi corrente per garantire affidabilità e coerenza della compilazione. Questa opzione triplet può essere impostata su un elenco di variabili di ambiente aggiuntive che verranno aggiunte all'ambiente pulito. I valori di queste variabili di ambiente verranno sottoposti a hashing nel pacchetto abi: per passare le variabili di ambiente senza rilevamento abi, vedere VCPKG_ENV_PASSTHROUGH_UNTRACKED.

Vedere anche il vcpkg env comando per informazioni su come esaminare l'ambiente preciso che verrà usato.

Nota

Questo elenco viene estratto tramite la vcpkg_get_tags funzione helper.

VCPKG_ENV_PASSTHROUGH_UNTRACKED

Indica a vcpkg di consentire variabili di ambiente aggiuntive nel processo di compilazione senza tracciare abi.

Vedere VCPKG_ENV_PASSTHROUGH.

VCPKG_VISUAL_STUDIO_PATH

Specifica l'installazione di Visual Studio da usare.

Per selezionare la combinazione precisa dell'istanza di Visual Studio e della versione del set di strumenti, viene illustrato l'algoritmo seguente:

  1. Determinare l'impostazione per VCPKG_VISUAL_STUDIO_PATH dalla tripletta o dalla variabile VCPKG_VISUAL_STUDIO_PATHdi ambiente oppure considerarla unset
  2. Determinare l'impostazione per VCPKG_PLATFORM_TOOLSET dalla tripletta o considerarla non impostata
  3. Raccogliere un elenco di tutte le coppie di istanze di Visual Studio con tutti i set di strumenti disponibili in tali istanze
    • Viene ordinato per primo per tipo di istanza (Stable, Prerelease, Legacy) e quindi per versione del set di strumenti (v143, v142, v141, v140)
  4. Filtrare l'elenco in base alle impostazioni per VCPKG_VISUAL_STUDIO_PATH e VCPKG_PLATFORM_TOOLSET.
  5. Selezionare l'opzione rimanente migliore

Il percorso deve essere assoluto, formattato con barre rovesciate e senza barra finale:

set(VCPKG_VISUAL_STUDIO_PATH "C:\\Program Files (x86)\\Microsoft Visual Studio\\Preview\\Community")

VCPKG_PLATFORM_TOOLSET

Specifica la toolchain del compilatore C/C++ basata su Visual Studio da usare.

Vedere VCPKG_VISUAL_STUDIO_PATH per l'algoritmo di selezione completo.

Impostazioni valide:

  • Il set di strumenti della piattaforma di Visual Studio 2022 è v143.
  • Il set di strumenti della piattaforma di Visual Studio 2019 è v142.
  • Il set di strumenti della piattaforma di Visual Studio 2017 è v141.
  • Il set di strumenti della piattaforma di Visual Studio 2015 è v140.

VCPKG_PLATFORM_TOOLSET_VERSION

Specifica la toolchain dettagliata del compilatore MSVC C/C++ da usare.

Per impostazione predefinita, VCPKG_PLATFORM_TOOLSET sceglie sempre la versione secondaria installata più recente del set di strumenti selezionato. Se è necessaria una maggiore granularità, è possibile usare questa variabile. È possibile specificare un numero di versione parziale o completo. I valori validi sono, ad esempio, 14.25 o 14.27.29110.

VCPKG_LOAD_VCVARS_ENV

Determina se vcpkg cercherà e userà un'istanza di Visual Studio come parte dell'ambiente triplet.

Per impostazione predefinita, si tratta ON di triplette di Windows che non specificano VCPKG_CHAINLOAD_TOOLCHAIN_FILE. Per i tripli e le triplette non Windows che specificano VCPKG_CHAINLOAD_TOOLCHAIN_FILE, per impostazione predefinita è OFF.

Variabili Linux

VCPKG_FIXUP_ELF_RPATH

Quando questa opzione è impostata su (true|1|on), vcpkg aggiungerà $ORIGIN e $ORIGIN/<path_relative_to_lib> all'intestazione RUNPATH di eseguibili e librerie condivise. In questo modo i pacchetti possono essere rilocati in Linux.

Variabili MacOS

VCPKG_INSTALL_NAME_DIR

Imposta il nome di installazione usato per la compilazione di librerie dinamiche macOS. Il valore predefinito è @rpath. Per altre informazioni, vedere la documentazione di CMake per CMAKE_INSTALL_NAME_DIR .

VCPKG_FIXUP_MACHO_RPATH

Garantisce che i file binari Mach-O compilati da vcpkg siano rilocabili usando nomi di installazione relativi e percorsi di esecuzione.

Se impostato su ON:

  • Modifica il campo assoluto LC_LC_ID_DYLIB in @rpath/<library> per i file binari della libreria condivisa;
  • Modifica i campi assoluti LC_RPATH in relazione @loader_path/<relative/path/to/library> ai file binari della libreria eseguibile e condivisa.

Importante

Questa funzionalità è abilitata per impostazione predefinita quando VCPKG_TARGET_IS_OSX è TRUE. Per disabilitare, impostare in modo esplicito su VCPKG_FIXUP_MACHO_RPATH OFF in un file triplet.

Per altre informazioni sulle librerie dinamiche in macOS, vedere i collegamenti seguenti:

VCPKG_OSX_DEPLOYMENT_TARGET

Imposta la versione minima di macOS per i file binari compilati. Ciò cambia anche le versioni di macOS platform SDK CMake che cercheranno. Per altre informazioni, vedere la documentazione di CMake per CMAKE_OSX_DEPLOYMENT_TARGET .

VCPKG_OSX_SYSROOT

Impostare il nome o il percorso dell'SDK della piattaforma macOS che verrà usato da CMake. Per altre informazioni, vedere la documentazione di CMake per CMAKE_OSX_SYSROOT .

VCPKG_OSX_ARCHITECTURES

Impostare l'architettura di destinazione macOS/iOS che verrà usata da CMake. Per altre informazioni, vedere la documentazione di CMake per CMAKE_OSX_ARCHITECTURES .

Personalizzazione per porta

La variabile PORT CMake verrà impostata durante l'interpretazione del file triplet. Può essere usato per modificare le impostazioni, ad esempio VCPKG_LIBRARY_LINKAGE, per ogni porta.

Esempio:

set(VCPKG_LIBRARY_LINKAGE static)
if(PORT MATCHES "qt5-")
    set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()

Verranno compilate tutte le qt5-* porte come librerie dinamiche, ma ogni altra porta come libreria statica.

Per un esempio in un progetto reale, vedere https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake.