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.
Określa architekturę maszyny docelowej.
Prawidłowe opcje obejmują x86
, x64
arm64
s390x
ppc64le
riscv32
arm64ec
arm
loongarch32
loongarch64
riscv64
mips64
i .wasm32
Określa żądany link CRT (dla MSVC).
Prawidłowe opcje to dynamic
i static
.
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.
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.
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)
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
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_FLAGS
i inne zmienne, są przekazywane do narzędzia CMake.
Zobacz również dokumentację narzędzia CMake dotyczącą plików łańcucha narzędzi.
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_FLAGS
wartość , musisz również ustawić VCPKG_C_FLAGS
wartość 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")
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
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.
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.
Zobacz VCPKG_MESON_NATIVE_FILE_RELEASE.
Zobacz VCPKG_MESON_NATIVE_FILE_RELEASE.
Zobacz VCPKG_MESON_NATIVE_FILE_RELEASE.
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.
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.
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"
)
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"
)
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.
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
, ON
lub 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.
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.
Instruuje program vcpkg, aby zezwolić na dodatkowe zmienne środowiskowe w procesie kompilacji bez śledzenia abi.
Zobacz: VCPKG_ENV_PASSTHROUGH
.
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:
- Określ ustawienie dla wartości
VCPKG_VISUAL_STUDIO_PATH
z potrójnej lub zmiennejVCPKG_VISUAL_STUDIO_PATH
środowiskowej lub rozważ jej anulowanie - Określanie ustawienia dla
VCPKG_PLATFORM_TOOLSET
elementu z potrójnego lub rozważ jego anulowanie - 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)
- Filtruj listę na podstawie ustawień dla
VCPKG_VISUAL_STUDIO_PATH
iVCPKG_PLATFORM_TOOLSET
. - 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")
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
.
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
.
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_FILE
wartość , ta wartość jest domyślnie ustawiona na OFF
.
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.
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 .
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:
- Identyfikacja biblioteki dynamicznej
- Standardowa konfiguracja biblioteki dynamicznej dla aplikacji
- Alternatywna pełna ścieżka biblioteki dynamicznej
- Osadzanie niestandardowych struktur kodu w pakiecie
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 .
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 .
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 .
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.
Opinia o produkcie vcpkg
vcpkg to projekt typu open source. Wybierz link, aby przekazać opinię: