İngilizce dilinde oku

Aracılığıyla paylaş


Üçlü değişkenler

Bu makalede, üçlü dosyalar için kullanılabilen vcpkg değişkenleri açıklanmaktadır. Üçlü dosya, kullanıcı tanımlı değişkenleri de içerebilir.

Üçlü özelliklerin üst düzey bir görünümü için üçlü kavram belgelerine bakın.

Değişkenler

VCPKG_TARGET_ARCHITECTURE

Hedef makine mimarisini belirtir.

Geçerli seçenekler şunlardır: x86, x64, arm, arm64, arm64ec, s390x, , ppc64le, , mips64loongarch32loongarch64riscv32riscv64ve .wasm32

VCPKG_CRT_LINKAGE

İstenen CRT bağlantısını belirtir (MSVC için).

Geçerli seçenekler şunlardır: dynamic ve static.

VCPKG_LIBRARY_LINKAGE

Tercih edilen kitaplık bağlantısını belirtir.

Geçerli seçenekler şunlardır: dynamic ve static. Kitaplıklar tercih edilen bağlantı türünü desteklemiyorsa bu ayarı yoksayabilir.

VCPKG_BUILD_TYPE

Bağlantı noktalarının yalnızca yayın sürümlerini oluşturmak için bu değeri release olarak ayarlayabilirsiniz. Varsayılan olarak bu değer boş olur. Bu değer boş olduğunda vcpkg derlemeleri bağlantı noktalarının yayın ve hata ayıklama yapılandırmalarını oluşturur.

VCPKG_CMAKE_SYSTEM_NAME

Hedef platformu belirtir.

Geçerli seçenekler şunlar gibi herhangi bir CMake sistem adını içerir:

  • Boş (eski nedenlerden dolayı Windows Masaüstü)
  • WindowsStore(Evrensel Windows Platformu)
  • MinGW (Windows için Minimalist GNU)
  • Darwin (Mac OSX)
  • iOS (iOS)
  • Linux (Linux)
  • Emscripten (WebAssembly)

VCPKG_CMAKE_SYSTEM_VERSION

Hedef platform sistem sürümünü belirtir.

Bu alan isteğe bağlıdır ve varsa derlemeye olarak CMAKE_SYSTEM_VERSIONgeçirilir.

Ayrıca bkz. CMake belgeleri CMAKE_SYSTEM_VERSION

VCPKG_CHAINLOAD_TOOLCHAIN_FILE

Kullanılacak alternatif bir CMake araç zinciri dosyası belirtir.

Bu (ayarlanırsa), diğer tüm derleyici algılama mantığını geçersiz kılar. Varsayılan olarak, platforma uygun olan bir araç zinciri dosyası seçilir scripts/toolchains/ .

Not

Özel bir araç zinciri dosyası oluşturmak için en iyisi mevcut bir araç zincirini ${VCPKG_ROOT}/scripts/toolchains dahil etmek ve genişletmektir. Bu, vcpkg yürütülebilir dosyası tarafından ayarlanan , VCPKG_CXX_FLAGS, VCPKG_LINKER_FLAGSve gibi VCPKG_TARGET_ARCHITECTUREdiğer değişkenlerin CMake'ye iletilmesini sağlar.

Araç zinciri dosyaları için CMake belgelerine de bakın.

VCPKG_CXX_FLAGS

kullanılmadığında VCPKG_CHAINLOAD_TOOLCHAIN_FILEkullanılacak ek derleyici bayraklarını ayarlar.

Bu seçenek ayrıca yapılandırmaya özgü bayraklar ve C dili bayrakları için formlar da vardır:

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

ayarlarsanız VCPKG_CXX_FLAGS, öğesini de ayarlamanız VCPKG_C_FLAGSgerekir ve tam tersi de geçerlidir. Yapılandırmaya özgü bayraklar için de aynı durum geçerlidir. Bu değişkenler, derleyici bayraklarının boşlukla ayrılmış dizesini kabul eder:

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

VCPKG_LINKER_FLAGS

yokluğunda VCPKG_CHAINLOAD_TOOLCHAIN_FILEdinamik kitaplıklar ve yürütülebilir dosyalar oluştururken kullanılacak ek bağlayıcı bayraklarını ayarlar.

Bu seçenek ayrıca yapılandırmaya özgü bayraklar için formlar da vardır:

  • VCPKG_LINKER_FLAGS
  • VCPKG_LINKER_FLAGS_DEBUG
  • VCPKG_LINKER_FLAGS_RELEASE

VCPKG_MESON_CONFIGURE_OPTIONS

Yapılandır komutuna (içinde vcpkg_configure_meson) eklenen ek Meson yapılandırma seçeneklerini ayarlayın.

Bu alan isteğe bağlıdır.

Derleme türüne özgü VCPKG_MESON_CONFIGURE_OPTIONS_DEBUG ve VCPKG_MESON_CONFIGURE_OPTIONS_RELEASE değişkenler olarak da kullanılabilir.

VCPKG_MESON_NATIVE_FILE_RELEASE

Meson çapraz/yerel dosyası olarak ek yapılandırma bağımlı dosyası sağlayın. vcpkg tarafından oluşturulan çapraz/yerel dosyalar geçirildikten sonra geçirileceğinden, vcpkg tarafından sağlanan ayarları geçersiz kılmak için kullanılabilir.

Özellikle kendi build_machine ve host_machine girdilerinizi sağlamak için kullanışlıdır.

VCPKG_MESON_NATIVE_FILE_DEBUG

bkz. VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_RELEASE

bkz. VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_DEBUG

bkz. VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_CMAKE_CONFIGURE_OPTIONS

Yapılandır komutuna (içinde vcpkg_cmake_configure) eklenen ek CMake yapılandırma seçeneklerini ayarlar.

Bu alan isteğe bağlıdır.

Derleme türüne özgü VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG ve VCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE değişkenler olarak da kullanılabilir.

VCPKG_CONFIGURE_MAKE_OPTIONS

Yapılandır komutuna (içinde vcpkg_configure_make) eklenen ek otomatik oluşturma/otomatik yapılandırma yapılandırma seçeneklerini ayarlayın.

Bu alan isteğe bağlıdır.

Örneğin, hatalı başarısız olabilecek bazı libtool denetimlerini atlamak için:

set(VCPKG_CONFIGURE_MAKE_OPTIONS "lt_cv_deplibs_check_method=pass_all")

Derleme türüne özgü VCPKG_CONFIGURE_MAKE_OPTIONS_DEBUG ve VCPKG_CONFIGURE_MAKE_OPTIONS_RELEASE değişkenler olarak da kullanılabilir.

VCPKG_HASH_ADDITIONAL_FILES

Paket ABI karmalarının hesaplamasına eklenecek dosyaların listesi.

Bu alan isteğe bağlıdır.

Bir paketin içeriğini etkileyen dosyaları bildirin ve ABI karması hesaplamasına katılmalıdır. Örneğin:

  • Özel üçüzlere ve araç zincirlerine dahil edilen dosyalar (aracılığıyla include(filepath)).
  • içinde tanımlanan dosyalar VCPKG_MESON_(NATIVE|CROSS)_FILE_<CONFIG>

Yalnızca dosyaların içeriği ve sırası dikkate alınır, dosyaların yolları ABI karması etkilemez.

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

VCPKG_POST_PORTFILE_INCLUDES

portfile.cmake yürütülürken eklenecek CMake dosyalarının listesi.

Bu alan isteğe bağlıdır.

Dosyaların içeriği ve sırası ABI karması için kullanılır, dosyaların yolları ABI karması etkilemez.

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

VCPKG_DEP_INFO_OVERRIDE_VARS

Not

Bu bölüm, vcpkg'nin herhangi bir zamanda değişebilen veya kaldırılabilen deneysel bir özelliğini kapsar.

Üçlü "Destekler" terimlerinin varsayılan hesaplanan listesinin yerini alır.

Bu seçenek (ayarlandıysa), Platform İfadesi değerlendirmesi için kullanılan varsayılan terim kümesini geçersiz kılar.

"supports" Daha fazla ayrıntı için bildirim dosyası alanı belgelerine bakın.

Not

Bu liste yardımcı işlevi aracılığıyla vcpkg_get_dep_info ayıklanır.

VCPKG_DISABLE_COMPILER_TRACKING

Uyarı

Geri yüklenen ikili paketlerde ABI uyumsuzluğuna neden olabileceğinden bu seçeneğin etkinleştirilmesi önerilmez. Daha fazla bilgi edinmek için ikili önbelleğe alma belgelerine bakın

Bu seçenek , ONveya 1olarak ayarlandığındaTRUE, derleyici paketin parçası olarak izlenmez.

Bu, ikili önbelleğe almanın eski veya daha yeni derleyicilerin derlemelerini yeniden kullanmasına neden olur.

Windows'a Özgü Değişkenler

VCPKG_ENV_PASSTHROUGH

Derleme işlemine ek ortam değişkenlerine izin vermek için vcpkg'ye bildirir.

Windows'da vcpkg, derleme güvenilirliğini ve tutarlılığını sağlamak için paketleri geçerli komut isteminden yalıtılmış özel bir temiz ortamda oluşturur. Bu üçlü seçenek, temiz ortama eklenecek ek ortam değişkenleri listesine ayarlanabilir. Bu ortam değişkenlerinin değerleri paket abi içine karma olarak eklenecektir. Ortam değişkenlerini abi izlemeden geçirmek için bkz VCPKG_ENV_PASSTHROUGH_UNTRACKED. .

Kullanılacak hassas ortamı nasıl inceleyebileceğinize ilişkin komuta da vcpkg env bakın.

Not

Bu liste yardımcı işlevi aracılığıyla vcpkg_get_tags ayıklanır.

VCPKG_ENV_PASSTHROUGH_UNTRACKED

vcpkg'ye, abi izlemesi olmadan derleme işlemine ek ortam değişkenlerine izin verme talimatı verir.

Bkz. VCPKG_ENV_PASSTHROUGH.

VCPKG_VISUAL_STUDIO_PATH

Kullanılacak Visual Studio yüklemesini belirtir.

Visual Studio örneği ve araç takımı sürümünün tam bileşimini seçmek için aşağıdaki algoritmayı gözden geçiriyoruz:

  1. VCPKG_VISUAL_STUDIO_PATH ayarını üçlüden veya ortam değişkeninden VCPKG_VISUAL_STUDIO_PATHbelirleyin veya ayarsız olarak değerlendirin
  2. için ayarını VCPKG_PLATFORM_TOOLSET üçlüden belirleyin veya ayarsız olarak düşünün
  3. Bu örneklerde kullanılabilen tüm araç kümeleriyle tüm Visual Studio örnekleri çiftlerinin listesini toplayın
    • Bu, önce örnek türüne (Kararlı, Ön Sürüm, Eski) ve ardından araç takımı sürümüne (v143, v142, v141, v140) göre sıralanır
  4. ve ayarlarına VCPKG_VISUAL_STUDIO_PATH VCPKG_PLATFORM_TOOLSETgöre listeyi filtreleyin.
  5. Kalan en iyi seçeneği belirtin

Yol mutlak olmalı, ters eğik çizgilerle biçimlendirilmeli ve sonunda eğik çizgi olmamalıdır:

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

VCPKG_PLATFORM_TOOLSET

Kullanılacak Visual Studio tabanlı C/C++ derleyici araç zincirini belirtir.

Tam seçim algoritması için bkz VCPKG_VISUAL_STUDIO_PATH .

Geçerli ayarlar:

  • Visual Studio 2022 platform araç takımıdır v143.
  • Visual Studio 2019 platform araç takımıdır v142.
  • Visual Studio 2017 platform araç takımıdır v141.
  • Visual Studio 2015 platform araç takımıdır v140.

VCPKG_PLATFORM_TOOLSET_VERSION

Kullanılacak ayrıntılı MSVC C/C++ derleyici araç zincirini belirtir.

Varsayılan olarak, VCPKG_PLATFORM_TOOLSET her zaman seçili araç takımının en son yüklenen ikincil sürümünü seçer. Daha fazla ayrıntı düzeyine ihtiyacınız varsa bu değişkeni kullanabilirsiniz. Kısmi veya tam sürüm numarası belirtebilirsiniz. Geçerli değerler şunlardır: örneğin, 14.25 veya 14.27.29110.

VCPKG_LOAD_VCVARS_ENV

vcpkg'nin üçlü ortamın bir parçası olarak Visual Studio örneğini arayıp aramayacağını ve kullanıp kullanmayacağını belirler.

Varsayılan olarak, bu ON belirtilmeyen VCPKG_CHAINLOAD_TOOLCHAIN_FILEWindows üçlüleri içindir. Windows olmayan üçüzler ve belirten VCPKG_CHAINLOAD_TOOLCHAIN_FILEüçlüler için bu varsayılan olarak kullanılır OFF.

Linux Değişkenleri

VCPKG_FIXUP_ELF_RPATH

Bu seçenek (true|1|on) olarak ayarlandığında, vcpkg yürütülebilir dosyalar ve paylaşılan kitaplıkların üst bilgisine RUNPATH ve $ORIGIN/<path_relative_to_lib> ekler$ORIGIN. Bu, paketlerin Linux üzerinde yeniden konumlandırılmasını sağlar.

MacOS Değişkenleri

VCPKG_INSTALL_NAME_DIR

macOS dinamik kitaplıkları oluştururken kullanılan yükleme adını ayarlar. Varsayılan değer @rpath olarak belirlenmiştir. Daha fazla bilgi için CMAKE_INSTALL_NAME_DIR için CMake belgelerine bakın.

VCPKG_FIXUP_MACHO_RPATH

vcpkg tarafından oluşturulan Mach-O ikili dosyalarının göreli yükleme adları ve çalışma yolları kullanılarak yeniden konumlandırılabilir olmasını sağlar.

olarak ONayarlandığında:

  • Paylaşılan kitaplık ikili dosyaları için mutlak LC_LC_ID_DYLIB alanı olarak @rpath/<library> değiştirir;
  • Yürütülebilir ve paylaşılan kitaplık ikili dosyaları için mutlak LC_RPATH alanları göreli @loader_path/<relative/path/to/library> olarak değiştirir.

Önemli

Bu işlev, olduğunda VCPKG_TARGET_IS_OSX varsayılan olarak etkindir TRUE. Devre dışı bırakmak için, üçlü dosyada açıkça olarak OFF olarak ayarlayınVCPKG_FIXUP_MACHO_RPATH.

macOS'taki dinamik kitaplıklar hakkında daha fazla bilgi için aşağıdaki bağlantılara bakın:

VCPKG_OSX_DEPLOYMENT_TARGET

Derlenmiş ikili dosyalar için en düşük macOS sürümünü ayarlar. Bu, macOS platform SDK'sı CMake'in hangi sürümlerini arayacağını da değiştirir. Daha fazla bilgi için CMAKE_OSX_DEPLOYMENT_TARGET için CMake belgelerine bakın.

VCPKG_OSX_SYSROOT

CMake tarafından kullanılacak macOS platform SDK'sının adını veya yolunu ayarlayın. Daha fazla bilgi için CMAKE_OSX_SYSROOT için CMake belgelerine bakın.

VCPKG_OSX_ARCHITECTURES

CMake tarafından kullanılacak macOS / iOS hedef mimarisini ayarlayın. Daha fazla bilgi için CMAKE_OSX_ARCHITECTURES için CMake belgelerine bakın.

Bağlantı noktası başına özelleştirme

Üçlü dosya yorumlanırken CMake değişkeni PORT ayarlanır. Ayarları (örneğin VCPKG_LIBRARY_LINKAGE) bağlantı noktası temelinde değiştirmek için kullanılabilir.

Örnek:

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

Bu işlem tüm qt5-* bağlantı noktalarını dinamik kitaplıklar olarak oluşturur, ancak diğer tüm bağlantı noktalarını statik kitaplık olarak oluşturur.

Gerçek projedeki bir örnek için bkz https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake. .