Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Zmienne potrójne

W tym artykule opisano zmienne vcpkg, które są dostępne dla plików potrójnych. Plik potrójny może również zawierać zmienne zdefiniowane przez użytkownika.

Zapoznaj się z dokumentacją dotyczącą koncepcji trypletów, aby zapoznać się z ogólnym widokiem funkcji potrójnych.

Zmienne

VCPKG_TARGET_ARCHITECTURE

Określa architekturę maszyny docelowej.

Prawidłowe opcje obejmują x86, x64arm64s390xppc64leriscv32arm64ecarmloongarch32loongarch64riscv64mips64i .wasm32

VCPKG_CRT_LINKAGE

Określa żądany link CRT (dla MSVC).

Prawidłowe opcje to dynamic i static.

VCPKG_LIBRARY_LINKAGE

Określa preferowany link biblioteki.

Prawidłowe opcje to dynamic i static. Biblioteki mogą ignorować to ustawienie, jeśli nie obsługują preferowanego typu połączenia.

VCPKG_BUILD_TYPE

Tę wartość można ustawić tak release , aby kompilować wersje tylko dla wersji portów. Domyślnie ta wartość jest pusta. Gdy ta wartość jest pusta, vcpkg kompiluje konfiguracje wydania i debugowania portów.

VCPKG_CMAKE_SYSTEM_NAME

Określa platformę docelową.

Prawidłowe opcje obejmują dowolną nazwę systemu CMake, taką jak:

  • Empty (Windows Desktop ze starszych powodów)
  • WindowsStore(platforma uniwersalna systemu Windows)
  • MinGW (Minimalistyczny GNU dla systemu Windows)
  • Darwin (Mac OSX)
  • iOS (iOS)
  • Linux (Linux)
  • Emscripten (Zestaw WebAssembly)

VCPKG_CMAKE_SYSTEM_VERSION

Określa docelową wersję systemu platformy.

To pole jest opcjonalne i, jeśli istnieje, zostanie przekazane do kompilacji jako CMAKE_SYSTEM_VERSION.

Zobacz również dokumentację narzędzia CMake, aby uzyskać informacje CMAKE_SYSTEM_VERSION

VCPKG_CHAINLOAD_TOOLCHAIN_FILE

Określa alternatywny plik łańcucha narzędzi CMake do użycia.

Spowoduje to (jeśli ustawiono) zastąpienie wszystkich innych logiki wykrywania kompilatora. Domyślnie plik łańcucha narzędzi jest wybierany z scripts/toolchains/ odpowiedniej do platformy.

Uwaga

Aby utworzyć niestandardowy plik łańcucha narzędzi, najlepiej zacząć od włączenia istniejącego łańcucha narzędzi i ${VCPKG_ROOT}/scripts/toolchains rozszerzenia go. Dzięki temu podstawowe zmienne ustawione przez plik wykonywalny vcpkg, takie jak VCPKG_TARGET_ARCHITECTURE, VCPKG_CXX_FLAGS, VCPKG_LINKER_FLAGSi inne zmienne, są przekazywane do narzędzia CMake.

Zobacz również dokumentację narzędzia CMake dotyczącą plików łańcucha narzędzi.

VCPKG_CXX_FLAGS

Ustawia dodatkowe flagi kompilatora, które mają być używane, gdy nie jest używany .VCPKG_CHAINLOAD_TOOLCHAIN_FILE

Ta opcja zawiera również formularze flag specyficznych dla konfiguracji i flag języka C:

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

Jeśli ustawisz VCPKG_CXX_FLAGSwartość , musisz również ustawić VCPKG_C_FLAGSwartość i na odwrót. To samo dotyczy flag specyficznych dla konfiguracji. Te zmienne akceptują rozdzielany spacjami ciąg flag kompilatora:

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

VCPKG_LINKER_FLAGS

Ustawia dodatkowe flagi konsolidatora, które mają być używane podczas tworzenia bibliotek dynamicznych i plików wykonywalnych w przypadku braku elementu VCPKG_CHAINLOAD_TOOLCHAIN_FILE.

Ta opcja zawiera również formularze flag specyficznych dla konfiguracji:

  • VCPKG_LINKER_FLAGS
  • VCPKG_LINKER_FLAGS_DEBUG
  • VCPKG_LINKER_FLAGS_RELEASE

VCPKG_MESON_CONFIGURE_OPTIONS

Ustaw dodatkowe opcje konfiguracji Meson, które są dołączane do polecenia configure (w pliku vcpkg_configure_meson).

To pole jest opcjonalne.

Dostępne również jako zmienne i VCPKG_MESON_CONFIGURE_OPTIONS_RELEASE specyficzne dla VCPKG_MESON_CONFIGURE_OPTIONS_DEBUG typu kompilacji.

VCPKG_MESON_NATIVE_FILE_RELEASE

Podaj dodatkowy plik zależny od konfiguracji jako plik między/natywny meson. Może służyć do zastępowania ustawień udostępnianych przez narzędzie vcpkg, ponieważ zostanie on przekazany po przekazaniu wygenerowanych plików krzyżowych/natywnych vcpkg.

Szczególnie przydatne do udostępniania własnych wpisów build_machine i host_machine.

VCPKG_MESON_NATIVE_FILE_DEBUG

Zobacz VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_RELEASE

Zobacz VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_DEBUG

Zobacz VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_CMAKE_CONFIGURE_OPTIONS

Ustawia dodatkowe opcje konfiguracji narzędzia CMake, które są dołączane do polecenia configure (w pliku vcpkg_cmake_configure).

To pole jest opcjonalne.

Dostępne również jako zmienne i VCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE specyficzne dla VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG typu kompilacji.

VCPKG_CONFIGURE_MAKE_OPTIONS

Ustaw dodatkowe opcje konfiguracji automake/autoconf, które są dołączane do polecenia configure (w pliku vcpkg_configure_make).

To pole jest opcjonalne.

Aby na przykład pominąć niektóre kontrole libtool, które mogą błędnie zakończyć się niepowodzeniem:

set(VCPKG_CONFIGURE_MAKE_OPTIONS "lt_cv_deplibs_check_method=pass_all")

Dostępne również jako zmienne i VCPKG_CONFIGURE_MAKE_OPTIONS_RELEASE specyficzne dla VCPKG_CONFIGURE_MAKE_OPTIONS_DEBUG typu kompilacji.

VCPKG_HASH_ADDITIONAL_FILES

Lista plików do uwzględnienia w obliczeniu skrótów ABI pakietu.

To pole jest opcjonalne.

Zadeklaruj wszystkie pliki, które mają wpływ na zawartość pakietu i powinny być uwzględniane w obliczeniu skrótu ABI. Na przykład:

  • Pliki dołączone (za pośrednictwem include(filepath)) w niestandardowych trójkach i łańcuchach narzędzi.
  • Pliki zdefiniowane w programie VCPKG_MESON_(NATIVE|CROSS)_FILE_<CONFIG>

Uwzględniana jest tylko zawartość i kolejność plików. Ścieżki plików nie mają wpływu na skrót ABI.

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

VCPKG_POST_PORTFILE_INCLUDES

Lista plików CMake do uwzględnienia po wykonaniu pliku portfile.cmake.

To pole jest opcjonalne.

Zawartość i kolejność plików są używane dla skrótu ABI, ścieżki plików nie mają wpływu na skrót ABI.

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

VCPKG_DEP_INFO_OVERRIDE_VARS

Uwaga

W tej sekcji opisano eksperymentalną funkcję vcpkg, która może ulec zmianie lub zostać usunięta w dowolnym momencie.

Zastępuje domyślną obliczoną listę terminów "Obsługuje".

Ta opcja (jeśli ustawiona) zastąpi domyślny zestaw terminów używanych do oceny wyrażeń platformy.

Aby uzyskać więcej informacji, zobacz dokumentację pola pliku manifestu "supports" .

Uwaga

Ta lista jest wyodrębniona za pośrednictwem vcpkg_get_dep_info funkcji pomocnika.

VCPKG_DISABLE_COMPILER_TRACKING

Ostrzeżenie

Włączenie tej opcji nie jest zalecane, ponieważ może prowadzić do niezgodności ABI w przywróconych pakietach binarnych. Zobacz dokumentację buforowania binarnego, aby dowiedzieć się więcej

Jeśli ta opcja jest ustawiona na TRUE, ONlub 1, kompilator nie będzie śledzony w ramach pakietu abis.

Spowoduje to buforowanie binarne w celu ponownego użycia kompilacji ze starszych lub nowszych kompilatorów.

Zmienne specyficzne dla systemu Windows

VCPKG_ENV_PASSTHROUGH

Instruuje program vcpkg, aby zezwolić na dodatkowe zmienne środowiskowe w procesie kompilacji.

W systemie Windows program vcpkg kompiluje pakiety w specjalnym czystym środowisku, które jest odizolowane od bieżącego wiersza polecenia, aby zapewnić niezawodność i spójność kompilacji. Tę opcję potrójną można ustawić na listę dodatkowych zmiennych środowiskowych, które zostaną dodane do czystego środowiska. Wartości tych zmiennych środowiskowych zostaną skrócone do pakietu abi — aby przekazać zmienne środowiskowe bez śledzenia abi, zobacz VCPKG_ENV_PASSTHROUGH_UNTRACKED.

Zobacz również vcpkg env polecenie, aby dowiedzieć się, jak można sprawdzić dokładne środowisko, które będzie używane.

Uwaga

Ta lista jest wyodrębniona za pośrednictwem vcpkg_get_tags funkcji pomocnika.

VCPKG_ENV_PASSTHROUGH_UNTRACKED

Instruuje program vcpkg, aby zezwolić na dodatkowe zmienne środowiskowe w procesie kompilacji bez śledzenia abi.

Zobacz: VCPKG_ENV_PASSTHROUGH.

VCPKG_VISUAL_STUDIO_PATH

Określa instalację programu Visual Studio do użycia.

Aby wybrać dokładną kombinację wystąpienia programu Visual Studio i wersji zestawu narzędzi, omówimy następujący algorytm:

  1. Określ ustawienie dla wartości VCPKG_VISUAL_STUDIO_PATH z potrójnej lub zmiennej VCPKG_VISUAL_STUDIO_PATHśrodowiskowej lub rozważ jej anulowanie
  2. Określanie ustawienia dla VCPKG_PLATFORM_TOOLSET elementu z potrójnego lub rozważ jego anulowanie
  3. Zbierz listę wszystkich par wystąpień programu Visual Studio ze wszystkimi zestawami narzędzi dostępnymi w tych wystąpieniach
    • Jest to najpierw uporządkowane według typu wystąpienia (stabilna, wersja wstępna, starsza wersja), a następnie według wersji zestawu narzędzi (v143, v142, v141, v140)
  4. Filtruj listę na podstawie ustawień dla VCPKG_VISUAL_STUDIO_PATH i VCPKG_PLATFORM_TOOLSET.
  5. Wybierz najlepszą pozostałą opcję

Ścieżka powinna być bezwzględna, sformatowana ukośnikami odwrotnymi i nie ma ukośnika końcowego:

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

VCPKG_PLATFORM_TOOLSET

Określa łańcuch narzędzi kompilatora C/C++ oparty na programie Visual Studio do użycia.

Zobacz VCPKG_VISUAL_STUDIO_PATH , aby zapoznać się z algorytmem pełnego wyboru.

Prawidłowe ustawienia:

  • Zestaw narzędzi platformy programu Visual Studio 2022 to v143.
  • Zestaw narzędzi platformy programu Visual Studio 2019 to v142.
  • Zestaw narzędzi platformy programu Visual Studio 2017 to v141.
  • Zestaw narzędzi platformy programu Visual Studio 2015 to v140.

VCPKG_PLATFORM_TOOLSET_VERSION

Określa szczegółowy łańcuch narzędzi kompilatora C/C++ MSVC do użycia.

Domyślnie VCPKG_PLATFORM_TOOLSET zawsze wybiera najnowszą zainstalowaną wersję pomocniczą wybranego zestawu narzędzi. Jeśli potrzebujesz większej szczegółowości, możesz użyć tej zmiennej. Można określić częściowy lub pełny numer wersji. Prawidłowe wartości to na przykład 14.25 lub 14.27.29110.

VCPKG_LOAD_VCVARS_ENV

Określa, czy narzędzie vcpkg będzie wyszukiwać i używać wystąpienia programu Visual Studio w ramach środowiska potrójnego.

Domyślnie dotyczy ON to trypletów systemu Windows, które nie określają VCPKG_CHAINLOAD_TOOLCHAIN_FILE. W przypadku trojaków i trojaków innych niż Windows określających VCPKG_CHAINLOAD_TOOLCHAIN_FILEwartość , ta wartość jest domyślnie ustawiona na OFF.

Zmienne systemu Linux

VCPKG_FIXUP_ELF_RPATH

Po ustawieniu tej opcji na wartość (true|1|on) program vcpkg doda $ORIGIN i $ORIGIN/<path_relative_to_lib> do RUNPATH nagłówka plików wykonywalnych i bibliotek udostępnionych. Umożliwia to przenoszenie pakietów w systemie Linux.

Zmienne systemu MacOS

VCPKG_INSTALL_NAME_DIR

Ustawia nazwę instalacji używaną podczas kompilowania bibliotek dynamicznych systemu macOS. Wartość domyślna to @rpath. Aby uzyskać więcej informacji, zobacz dokumentację narzędzia CMake dla CMAKE_INSTALL_NAME_DIR .

VCPKG_FIXUP_MACHO_RPATH

Zapewnia, że pliki binarne Mach-O utworzone przez narzędzie vcpkg są zmieniane przy użyciu względnych nazw instalacji i ścieżek uruchamiania.

Po ustawieniu wartości na ON:

  • Modyfikuje pole bezwzględne LC_LC_ID_DYLIB dla @rpath/<library> plików binarnych bibliotek udostępnionych;
  • Modyfikuje pola bezwzględne LC_RPATH względem @loader_path/<relative/path/to/library> plików binarnych plików wykonywalnych i udostępnionych bibliotek.

Ważne

Ta funkcja jest domyślnie włączona, gdy VCPKG_TARGET_IS_OSX ma wartość TRUE. Aby wyłączyć, jawnie ustaw wartość VCPKG_FIXUP_MACHO_RPATH na OFF w pliku potrójnym.

Aby uzyskać więcej informacji na temat bibliotek dynamicznych w systemie macOS, zapoznaj się z następującymi linkami:

VCPKG_OSX_DEPLOYMENT_TARGET

Ustawia minimalną wersję systemu macOS dla skompilowanych plików binarnych. Spowoduje to również zmianę wersji narzędzia CMake zestawu SDK platformy macOS. Aby uzyskać więcej informacji, zobacz dokumentację narzędzia CMake dla CMAKE_OSX_DEPLOYMENT_TARGET .

VCPKG_OSX_SYSROOT

Ustaw nazwę lub ścieżkę zestawu SDK platformy macOS, który będzie używany przez narzędzie CMake. Aby uzyskać więcej informacji, zobacz dokumentację narzędzia CMake dla CMAKE_OSX_SYSROOT .

VCPKG_OSX_ARCHITECTURES

Ustaw architekturę docelową systemu macOS/iOS, która będzie używana przez narzędzie CMake. Aby uzyskać więcej informacji, zobacz dokumentację narzędzia CMake dla CMAKE_OSX_ARCHITECTURES .

Dostosowywanie poszczególnych portów

Zmienna PORT CMake zostanie ustawiona podczas interpretowania pliku potrójnego. Może służyć do zmieniania ustawień (takich jak VCPKG_LIBRARY_LINKAGE) dla poszczególnych portów.

Przykład:

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

Spowoduje to skompilowanie qt5-* wszystkich portów jako bibliotek dynamicznych, ale każdy inny port jako biblioteka statyczna.

Przykład w rzeczywistym projekcie można znaleźć w temacie https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake.