Aracılığıyla paylaş


Bildirim modu nedir?

vcpkg iki işlem moduna sahiptir: klasik mod ve bildirim modu. Çoğu kullanıcı için bildirim modunu yeniden kullandık.

Bildirim modu, projeniz veya paketiniz hakkındaki meta verileri açıklamak için bildirim temelli JSON dosyalarını kullanır. Her durumda, bu dosyanın adı şeklindedir vcpkg.json.

Bildirim modu, çalışma dizininde vcpkg install bir bildirim dosyası (vcpkg.json) varken komutu çalıştırılarak devreye girer. Bildirim modunda paketleri yükleme hakkında ayrıntılı bilgi için okumaya devam edin.

Bildirim modu, sürüm oluşturma ve özel kayıt defterleri gibi gelişmiş özellikleri kullanmak için de gereklidir.

Bağlantı noktalarındaki bildirim dosyaları

Tüm vcpkg bağlantı noktaları, yükledikleri paketle ilgili meta verileri açıklayan bir vcpkg.json dosya içermelidir.

vcpkg, bağımlılık ağaçlarını hesaplama, paketleri ada veya açıklamaya göre arama, özellikleri çözme vb. gibi çeşitli amaçlar için paket bildirimindeki meta verileri kullanır.

Paket bildirimi örneği

{
  "name": "fmt",
  "version": "10.1.1",
  "description": "Formatting library for C++. It can be used as a safe alternative to printf or as a fast alternative to IOStreams.",
  "homepage": "https://github.com/fmtlib/fmt",
  "license": "MIT",
  "dependencies": [
    {
      "name": "vcpkg-cmake",
      "host": true
    },
    {
      "name": "vcpkg-cmake-config",
      "host": true
    }
  ]
}

Projelerdeki bildirim dosyaları

Projenizde bir bildirim dosyası kullanmanın temel amacı bağımlılıklarınızı bildirmektir. Proje bildirimi kullanırken, bağımlılıklarınızın belirli sürümlerini kilitlemek için sürüm kısıtlamaları ve geçersiz kılmalar belirtebilirsiniz. Bu özellik klasik modda kullanılamaz.

Proje bildirimi örneği

{
  "dependencies": [ "fmt", "zlib" ],
  "builtin-baseline": "3426db05b996481ca31e95fff3734cf23e0f51bc",
  "overrides": [
    { "name": "zlib", "version": "1.2.8" }
  ]
}

Yapılandırma dosyası

vcpkg, daha fazla paket kayıt defteri veya katman bağlantı noktası ve üçlü konum eklemek için bir vcpkg-configuration.json dosya aracılığıyla yapılandırılabilir.

Yapılandırma dosyası örneği

{
  "default-registry": {
    "kind": "git",
    "baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
    "repository": "https://github.com/microsoft/vcpkg"
  },
  "registries": [
    {
      "kind": "git",
      "repository": "https://github.com/northwindtraders/vcpkg-registry",
      "baseline": "dacf4de488094a384ca2c202b923ccc097956e0c",
      "packages": [ "beicode", "beison" ]
    }
  ],
  "overlay-ports": [
    "C:\\dev\\my_vcpkg_ports"
  ]
}

Paketleri bildirim modunda yükleme

Bildirim dosyası kullanarak paketleri yüklemek için, herhangi bir paket bağımsız değişkeni olmadan komutunu kullanırsınız vcpkg install . Komut, bildirim (vcpkg.json) dosyası içeren bir dizinden veya seçeneği kullanılarak sağlanan bildirim dosyasının yolundan --x-manifest-root=<path> yürütülmelidir.

Bildirim modunda yüklenen paketler, klasik modda olduğu gibi genel installed dizine yüklenmez. Bunun yerine, her bildirim adlı vcpkg_installedkendi yükleme dizinini alır; vcpkg_installed dizin, bildirim dosyasını içeren aynı dizinde oluşturulur.

Bildirim başına bağımsız yükleme ağaçlarının olması, farklı projeler arasındaki bağımlılıkların ayrılmasına olanak tanır. Bu, her bağlantı noktasının yalnızca bir sürümünün yüklenmesine izin veren klasik modun önemli bir sınırlamasını atlatır. Bildirim modu, bağlantı noktalarının sürümlerini proje başına ayrı tutar.

Proje bildirimlerinde özellikleri kullanma

Bildirim dosyaları, "özellikler" kullanılarak ek işlev, davranış ve bağımlılık kümeleri tanımlayabilir.

Projelerinizde, projenizin bölümlerine uygulanan bağımlılıkları etkinleştirmek veya devre dışı bırakmak için özellikler tanımlayabilirsiniz. Örneğin, projeniz birden çok bileşen içeriyorsa, ortak bağımlılıkları "dependencies" listede tutmak ancak bazılarını ilgili bileşenleriyle sınırlamak isteyebilirsiniz.

Projenizin özelliklerini etkinleştirmek için aşağıdaki yöntemlerden birini kullanabilirsiniz:

Örnek: Proje bildirimlerindeki özellikler

{
  "name": "my-game",
  "dependencies": [ "grpc" ],
  "features": {
    "client": {
      "description": "client game executable",
      "dependencies": [ "sdl2", "bullet3" ]
    }, 
    "server": {
      "description": "multiplayer server executable",
      "dependencies": [ "proxygen" ]
    }, 
    "tests": {
      "description": "development tests",
      "dependencies": [ "gtest" ]
    }
  }
} 

Yalnızca "istemci" bileşeninin bağımlılıklarını oluşturmak için şu komutu çalıştırın:

vcpkg install --x-feature=client

Sonraki adımlar

Şimdi deneyebileceğiniz bazı görevler şunlardır: