Sürüm oluşturma başvurusu

Sürüm oluşturma, projeniz tarafından kullanılan bağımlılıkların kesin düzeltmelerini bildirim dosyanızın içinden belirlenimci olarak denetlemenize olanak tanır. Sürüm oluşturma yalnızca Bildirim modu kullanıcıları tarafından kullanılabilir.

vcpkg sürüm oluşturma algoritması ve üst düzey kavramlar hakkında daha fazla bilgi için bkz . Sürüm Oluşturma Kavramları.

Bağlamla ilgili bir örnek için sürüm oluşturmaya başlama kılavuzumuza bakın.

Sürüm Düzenleri

vcpkg'deki bağlantı noktaları, paketin yazarları tarafından kullanılan sürüm oluşturma kurallarını izlemeye çalışmalıdır. Bu nedenle, bir paketin sürümü bildirildiğinde uygun düzen kullanılmalıdır.

Her sürüm oluşturma düzeni, geçerli bir sürüm dizesinin ne olduğuna ilişkin kendi kurallarını ve daha da önemlisi aynı düzeni kullanarak sürümleri sıralama kurallarını tanımlar.

vcpkg tarafından anlaşılan sürüm oluşturma düzenleri şunlardır:

Bildirim özelliği Sürüm oluşturma düzeni
version Noktalı sayısal sürümler için
version-semver SemVer uyumlu sürümler için
version-date Biçimdeki tarihler için YYYY-MM-DD
version-string Rastgele dizeler için

Bildirim yalnızca bir sürüm bildirimi içermelidir.

Not

Tasarım gereği, vcpkg farklı şemalar kullanan sürümleri karşılaştırmaz. Örneğin, bir içeren version-string: 7.1.3 bir paket kullanarak aynı paketle version: 7.1.4karşılaştırılamaz, dönüştürme açıkça görünse bile.

version

Gevşek, noktayla ayrılmış, semver benzeri bir düzeni izleyen sürüm dizelerini kabul eder.

Sürüm mantıksal olarak noktalı (.) sayısal bölümlerden oluşur. Her bölüm, başında sıfır olmayan bir tamsayı pozitif sayı içermelidir.

Bu sürüm oluşturma düzeni için regex deseni şöyledir: (0|[1-9]\d*)(\.(0|[1-9]\d*))*

Sıralama davranışı: İki sürümü karşılaştırırken, ilk fark bulunana kadar her bölüm, sayısal değerleriyle soldan sağa karşılaştırılır. En küçük bölüm kümesine sahip bir sürüm, önceki tüm bölümlerin eşit olarak karşılaştırılması göz önünde bulundurulduğunda, daha büyük bir bölüm kümesine sahip olan başka bir sürümden önceliklidir.

Örnek:

0 < 0.1 < 0.1.0 < 1 < 1.0.0 < 1.0.1 < 1.1< 2.0.0

version-semver

Anlamsal sürüm oluşturma belirtiminde açıklandığı gibi anlamsal sürüm oluşturma kurallarına uyan sürüm dizelerini kabul eder.

Sıralama davranışı: Dizeler, anlamsal sürüm oluşturma belirtiminde açıklanan kurallara göre sıralanır.

Örnek:

1.0.0-1 < 1.0.0-alpha < 1.0.0-beta < 1.0.0 < 1.0.1 < 1.1.0

version-date

ISO-8601 biçiminden YYYY-MM-DDsonraki bir tarihe ayrıştırılabilir sürüm dizelerini kabul eder. Kesinleştirme tanımlayıcılarına, başta sıfır olmadan noktayla ayrılmış, pozitif, tamsayı şeklinde izin verilir.

Bu, sürüm sürümleri oluşturulmamış "Live at HEAD" kitaplıkları için önerilen sürüm oluşturma şemasıdır.

Bu sürüm oluşturma düzeni için regex deseni şöyledir: \d{4}-\d{2}-\d{2}(\.(0|[1-9]\d*))*

Sıralama davranışı: Dizeler önce tarih bölümlerine, sonra da kesinleştirme tanımlayıcılarının sayısal karşılaştırmasına göre sıralanır. Kesinleştirme tanımlayıcıları, gevşek (version) düzenin kurallarına uyar.

Örnekler: 2021-01-01<2021-01-01.1<2021-02-01.1.2<2021-02-01.1.3<2021-02-01

version-string

Diğer düzenlerden herhangi birine uymayan sürüm dizeleri kullanan paketler için en rastgele dizeleri kabul eder. # Bağlantı noktası sürümlerini belirtmek için kullanılan sürüme izin verilmez.

Sıralama davranışı: Sürüm dizesinin kendisinde sıralama denenmemiştir. Ancak, dizeler tam olarak eşleşiyorsa, bağlantı noktası sürümleri karşılaştırılabilir ve sıralanabilir.

Örnekler:

  • apple <> orange <> orange.2 <> orange2
  • watermelon#0< watermelon#1

port-version

Bağlantı noktası sürümleri, yukarı akış kitaplığı sürümünde değişiklik yapmadan paketleme dosyalarındaki (vcpkg.json, portfile.cmakevb.) değişiklikleri izler.

Bağlantı noktası sürümü negatif olmayan bir tamsayı değeridir.

Bağlantı noktası sürümleri için kurallar şunlardır:

  • Bağlantı noktasının özgün sürümü için 0'da başlayın,
  • paketin sürümünü artırmayan bağlantı noktasında vcpkg'ye özgü bir değişiklik yapıldığında 1 artırın,
  • ve paketin sürümü her güncelleştirildiğinde 0'a sıfırlayın.

Not

vcpkg, metin biçimini izler <version>#<port version>. Örneğin 1.2.0#2 , sürüm 1.2.0 bağlantı noktası sürümü 2anlamına gelir. Bağlantı noktası sürümü sonekse 0#0 atlanır (örneğin, 1.2.0 sürüm 1.2.0 bağlantı noktası sürümü 0anlamına gelir).

Sıralama davranışı: İki sürüm eşit olarak karşılaştırılırsa, bağlantı noktası sürümleri sayısal değerleriyle karşılaştırılır, daha düşük bağlantı noktası sürümleri önceliklidir.

Örnekler:

  • 1.2.0 < 1.2.0#1 < 1.2.0#2 < 1.2.0#10
  • 2021-01-01#20 < 2021-01-01.1
  • windows#7 < windows#8

Sürüm Kısıtlamaları

Temel

Temeller, hangi sürümlerin dikkate alınacağı için genel bir sürüm katı tanımlar. Bu, üst düzey bildirimlerin tek tek doğrudan "version>=" kısıtlamalar belirtmeye gerek kalmadan bağımlılık grafiğinin tamamını güncel tutmasına olanak tanır.

Yapılandırılan her kayıt defterinin ilişkili bir temeli vardır. Hiçbir kayıt defterini yapılandırmamış bildirimler için, "builtin-baseline" alanı yerleşik kayıt defteri için temeli tanımlar. Bir bildirim herhangi bir kayıt defteri yapılandırmazsa ve bir "builtin-baseline"kaydı yoksa, yükleme Klasik mod algoritmasına göre çalışır ve tüm sürüm oluşturma bilgilerini yoksayar.

Diğer kayıt defteri ayarları gibi temeller, bağımlılık olarak kullanılan bağlantı noktalarında yoksayılır. Geçişli sürüm çözümlemesi sırasında en düşük sürüm gerekiyorsa, bağlantı noktası kullanmalıdır "version>=".

Örnek

{
  "name": "project",
  "version": "1.0.0",
  "dependencies": ["zlib", "fmt"],
  "builtin-baseline":"9fd3bd594f41afb8747e20f6ac9619f26f333cbe"
}

başlangıç "builtin-baseline"eklemek için kullanın vcpkg x-update-baseline --add-initial-baseline. Bildirimdeki temelleri güncelleştirmek için kullanın vcpkg x-update-baseline.

version>=

En düşük sürüm gereksinimini ifade eder, version>= bildirimler bir bağımlılığı karşılamak için kullanılabilecek sürümlere daha düşük bir sınır koyar.

Not

vcpkg tüm kısıtlamalarla eşleşen en düşük sürümü seçer, bu nedenle küçüktür kısıtlaması gerekli değildir.

Örnek:

{
  "name": "project",
  "version-semver": "1.0.0",
  "dependencies": [
    { "name": "zlib", "version>=": "1.2.11#9" },
    { "name": "fmt", "version>=": "7.1.3#1" }
  ],
  "builtin-baseline":"3426db05b996481ca31e95fff3734cf23e0f51bc"
}

Sürüm kısıtlama bildiriminin bir parçası olarak, bir bağlantı noktası sürümü, önceki örnekte 1.2.11#9 sürüm 1.2.11 bağlantı noktası sürümüne 9başvuruda bulunarak belirtilebilir#<port-version>.

overrides

Geçersiz kılma bildirimi vcpkg'yi diğer tüm sürüm kısıtlamalarını yoksaymaya ve geçersiz kılmada belirtilen sürümü kullanmaya zorlar. Bu, tam sürümleri sabitlemek ve sürüm çakışmalarını çözmek için yararlıdır.

Geçersiz kılmalar, paket sürümü bildirimleri dizisi olarak bildirilir.

Geçersiz kılmanın etkili olması için geçersiz kılınan paketin bağımlılık grafiğinin bir parçasını oluşturması gerekir. Bu, bir bağımlılığın en üst düzey bildirim tarafından bildirilmesi veya geçişli bağımlılığın parçası olması gerektiği anlamına gelir.

{
  "name": "project",
  "version-semver": "1.0.0",
  "dependencies": [
    "curl",
    { "name": "zlib", "version>=": "1.2.11#9" },
    "fmt"
  ],
  "builtin-baseline":"3426db05b996481ca31e95fff3734cf23e0f51bc",
  "overrides": [
    { "name": "fmt", "version": "6.0.0" },
    { "name": "openssl", "version": "1.1.1h#3" }
  ]
}