Üç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.
Hedef makine mimarisini belirtir.
Geçerli seçenekler şunlardır: x86
, x64
, arm
, arm64
, arm64ec
, s390x
, , ppc64le
, , mips64
loongarch32
loongarch64
riscv32
riscv64
ve .wasm32
İstenen CRT bağlantısını belirtir (MSVC için).
Geçerli seçenekler şunlardır: dynamic
ve static
.
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.
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.
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)
Hedef platform sistem sürümünü belirtir.
Bu alan isteğe bağlıdır ve varsa derlemeye olarak CMAKE_SYSTEM_VERSION
geçirilir.
Ayrıca bkz. CMake belgeleri CMAKE_SYSTEM_VERSION
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_FLAGS
ve gibi VCPKG_TARGET_ARCHITECTURE
diğer değişkenlerin CMake'ye iletilmesini sağlar.
Araç zinciri dosyaları için CMake belgelerine de bakın.
kullanılmadığında VCPKG_CHAINLOAD_TOOLCHAIN_FILE
kullanı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_FLAGS
gerekir 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")
yokluğunda VCPKG_CHAINLOAD_TOOLCHAIN_FILE
dinamik 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
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.
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.
bkz. VCPKG_MESON_NATIVE_FILE_RELEASE.
bkz. VCPKG_MESON_NATIVE_FILE_RELEASE.
bkz. VCPKG_MESON_NATIVE_FILE_RELEASE.
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.
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.
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"
)
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"
)
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.
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 , ON
veya 1
olarak 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.
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'ye, abi izlemesi olmadan derleme işlemine ek ortam değişkenlerine izin verme talimatı verir.
Bkz. VCPKG_ENV_PASSTHROUGH
.
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:
VCPKG_VISUAL_STUDIO_PATH
ayarını üçlüden veya ortam değişkenindenVCPKG_VISUAL_STUDIO_PATH
belirleyin veya ayarsız olarak değerlendirin- için ayarını
VCPKG_PLATFORM_TOOLSET
üçlüden belirleyin veya ayarsız olarak düşünün - 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
- ve ayarlarına
VCPKG_VISUAL_STUDIO_PATH
VCPKG_PLATFORM_TOOLSET
göre listeyi filtreleyin. - 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")
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
.
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'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_FILE
Windows üç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
.
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 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 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 ON
ayarlandığı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:
- Dinamik Kitaplık Tanımlama
- Dinamik Kitaplık Uygulamalar için Standart Kurulum
- Dinamik Kitaplık Tam Yolu Alternatifi
- Standart olmayan kod yapılarını bir pakete ekleme
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.
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.
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.
Üç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. .
vcpkg geri bildirimi
vcpkg, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: