Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk gambaran umum penggunaan manifes dengan vcpkg, lihat Mode manifes.
Manifes adalah dokumen JSON yang ketat. Mereka tidak boleh berisi komentar gaya C++(//) atau koma berikutnya. Namun Anda dapat menggunakan nama bidang yang dimulai dengan $ untuk menulis komentar Anda di objek apa pun yang memiliki sekumpulan kunci yang ditentukan dengan baik. Bidang komentar ini tidak diizinkan dalam objek apa pun yang mengizinkan kunci yang ditentukan pengguna (seperti "features").
Skema JSON terbaru tersedia di https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json. ID dengan dukungan Skema JSON seperti Visual Studio dan Visual Studio Code dapat menggunakan file ini untuk menyediakan pelengkapan otomatis dan pemeriksaan sintaksis. Untuk sebagian besar IDE, Anda harus mengatur "$schema" ke vcpkg.json URL ini.
Example
{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
"dependencies": [
"boost-system",
{
"name": "cpprestsdk",
"default-features": false
},
"libxml2",
"yajl"
]
}
Contoh ini menunjukkan manifes untuk aplikasi menggunakan boost-system, , cpprestsdklibxml2, dan yajl. Contohnya juga mencakup referensi untuk mengaktifkan validasi IDE dan pelengkapan otomatis yang $schema lebih baik.
Bidang tingkat atas
| Nama | Diperlukan | Tipe | Description |
|---|---|---|---|
| garis besar bawaan | Tidak. | string | Pin versi yang akan digunakan saat membangun sebagai tingkat atas |
| fitur default | Tidak. | Objek Fitur[] | Memerlukan fitur yang tercantum sebagai on-by-default |
| Dependensi | Tidak. | Dependensi[] | Daftar dependensi yang diperlukan untuk membangun dan menggunakan proyek ini |
| deskripsi | Perpustakaan | string atau string[] | Deskripsi proyek |
| dokumentasi | Tidak. | string | URI ke dokumentasi proyek upstram |
| fitur | Tidak. | {string: Feature} | Fitur opsional yang tersedia untuk pengguna proyek |
| beranda | Tidak. | string | URI ke beranda proyek hulu |
| lisensi | Tidak. | string atau null | Ekspresi lisensi SPDX |
| Pengelola | Tidak. | string atau string[] | Pengelola file paket |
| Nama | Perpustakaan | string | Nama proyek |
| Mengabaikan | Tidak. | Ambil alih[] | Pin versi yang akan digunakan saat membangun sebagai tingkat atas |
| versi port | Tidak. | bilangan bulat | Revisi file port |
| Mendukung | Tidak. | Ekspresi Platform | Platform dan konfigurasi build yang didukung |
|
versi semver versi tanggal versi string versi |
Perpustakaan | string | Informasi versi upstram |
"builtin-baseline"
Pintasan untuk menentukan "baseline" resolusi versi di registri default. String. Opsional, hanya digunakan oleh proyek tingkat atas.
Bidang ini menunjukkan penerapan https://github.com/microsoft/vcpkg yang menyediakan informasi versi minimum global untuk manifes Anda. Ini diperlukan untuk file manifes tingkat atas menggunakan penerapan versi tanpa yang ditentukan "default-registry". Ini memiliki semantik yang sama dengan menentukan registri default Anda menjadi:
{
"default-registry": {
"kind": "builtin",
"baseline": "<value>"
}
}
Lihat penerapan versi dan Menggunakan registri untuk detail semantik selengkapnya.
"default-features"
Serangkaian fitur yang diperlukan untuk perilaku yang wajar tanpa penyesuaian tambahan.
Fitur default secara otomatis dipilih jika:
- Dependensi port-ke-port untuk port memiliki
"default-features": true-- nilai default. - Manifes tingkat atas tidak memiliki dependensi untuk port dengan
"default-features": false.
Fitur default menangani kasus tertentu untuk menyediakan konfigurasi "default" untuk dependensi transitif yang mungkin tidak diketahui oleh proyek tingkat atas. Port yang digunakan oleh orang lain harus hampir selalu digunakan "default-features": false untuk dependensinya.
Anda dapat menentukan fitur default khusus platform dengan menggunakan Objek Fitur:
{
"name": "my-port",
"default-features": [
"png",
{
"name": "winssl",
"platform": "windows"
}
]
}
Lihat "features" untuk informasi selengkapnya tentang fitur.
"description"
Penjabaran dari port. String atau array string. Diperlukan untuk pustaka, opsional untuk proyek tingkat atas.
Ini digunakan untuk membantu pengguna menemukan pustaka sebagai bagian search dari perintah atau find dan mempelajari apa yang dilakukan pustaka.
"dependencies"
Daftar dependensi yang diperlukan oleh proyek. Array objek Dependensi. Optional.
Bidang ini mencantumkan semua dependensi yang diperlukan untuk membangun dan menggunakan pustaka atau aplikasi Anda.
Contoh dependensi port
"dependencies": [
{
"name": "arrow",
"default-features": false,
"features": [
"json",
{
"name": "mimalloc",
"platform": "windows"
}
]
},
"boost-asio",
"openssl",
{
"name": "picosha2",
"platform": "!windows"
}
]
"documentation"
URI ke dokumentasi proyek upstram. String. Optional.
"features"
Fitur yang tersedia untuk pengguna proyek. Peta nama ke objek Fitur. Optional.
Fitur adalah bendera boolean yang menambahkan perilaku dan dependensi tambahan ke build. Lihat Dokumentasi Konsep Manifes untuk informasi selengkapnya tentang fitur.
"homepage"
URI ke beranda proyek. String. Optional.
"license"
Ekspresi lisensi singkat SPDX dari proyek. String atau null. Optional.
"license" harus berupa ekspresi lisensi SPDX 3.19 atau harus null menunjukkan bahwa pengguna harus membaca file yang disebarkan/share/<port>/copyright. DocumentRefs tidak didukung.
Nota
Informasi lisensi yang disediakan untuk setiap paket dalam registri vcpkg mewakili pemahaman terbaik Microsoft tentang persyaratan lisensi. Namun, informasi ini mungkin tidak definitif. Pengguna disarankan untuk memverifikasi persyaratan lisensi yang tepat untuk setiap paket yang ingin mereka gunakan, karena pada akhirnya merupakan tanggung jawab mereka untuk memastikan kepatuhan terhadap lisensi yang berlaku.
Contoh string lisensi
MITLGPL-2.1-only AND BSD-2-ClauseGPL-2.0-or-later WITH Bison-exception-2.2
EBNF
vcpkg menggunakan EBNF berikut untuk mengurai bidang lisensi:
idchar = ? regex /[-.a-zA-Z0-9]/ ?
idstring = ( idchar ), { idchar } ;
(* note that unrecognized license and license exception IDs will be warned against *)
license-id = idstring ;
license-exception-id = idstring ;
(* note that DocumentRefs are unsupported by this implementation *)
license-ref = "LicenseRef-", idstring ;
with = [ whitespace ], "WITH", [ whitespace ] ;
and = [ whitespace ], "AND", [ whitespace ] ;
or = [ whitespace ], "OR", [ whitespace ] ;
simple-expression = [ whitespace ], (
| license-id
| license-id, "+"
| license-ref
), [ whitespace ] ;
(* the following are split up from compound-expression to make precedence obvious *)
parenthesized-expression =
| simple-expression
| [ whitespace ], "(", or-expression, ")", [ whitespace ] ;
with-expression =
| parenthesized-expression
| simple-expression, with, license-exception-id, [ whitespace ] ;
(* note: "a AND b OR c" gets parsed as "(a AND b) OR c" *)
and-expression = with-expression, { and, with-expression } ;
or-expression = and-expression, { or, and-exression } ;
license-expression = or-expression ;
"maintainers"
Daftar pengelola paket. String atau array string. Optional.
Sebaiknya gunakan formulir "GivennameSurname<email>".
"name"
Nama proyek. String. Diperlukan untuk pustaka, opsional untuk proyek tingkat atas.
Nama harus huruf kecil ASCII, digit, atau tanda hubung (-). Ini tidak boleh dimulai atau diakhir dengan tanda hubung. Pustaka didorong untuk menyertakan organisasi atau nama kerangka kerja mereka sebagai awalan, seperti msft- atau boost- untuk membantu pengguna menemukan dan menjelaskan pustaka terkait.
Misalnya, pustaka dengan nama Boost.Asio resmi mungkin diberi nama boost-asio.
"overrides"
Pin versi yang tepat untuk digunakan untuk dependensi tertentu. Larik Ambil alih objek. Optional.
"overrides" dari manifes transitif (yaitu dari dependensi) diabaikan. Hanya penimpaan yang ditentukan oleh proyek tingkat atas yang digunakan.
| Nama | Diperlukan | Tipe | Description |
|---|---|---|---|
| Nama | Yes | string | Nama port |
| version | Yes | string | Informasi versi upstream untuk disematkan. |
|
semver versi tanggal versi string versi |
Yes | string | Alternatif yang tidak digunakan lagi untuk version penamaan skema tertentu. |
| versi port | Tidak. | bilangan bulat | Revisi file port untuk disematkan. Tidak digunakan lagi demi ditempatkan ke dalam versi itu sendiri. |
"port-version" harus ditentukan sebagai #N akhiran dalam "version". Misalnya, "version": "1.2.3#7" nama versi 1.2.3, port-versi 7.
Lihat juga penerapan versi untuk detail semantik lainnya.
Contoh penimpaan versi
"overrides": [
{
"name": "arrow", "version": "1.2.3#7"
},
{
"name": "openssl", "version": "1.1.1h#3"
}
]
"port-version"
Akhiran versi yang membedakan revisi ke file kemasan. Bilangan bulat. Secara default menjadi 0.
"port-version" harus ditingkatkan setiap kali versi baru port diterbitkan yang tidak mengubah versi sumber upstream. Ketika versi sumber upstream diubah, bidang versi harus berubah dan "port-version" harus diatur ulang ke 0 (atau dihapus).
Lihat penerapan versi untuk detail selengkapnya.
"supports"
Platform yang didukung dan konfigurasi build. Ekspresi platform. Optional.
Bidang ini men dokumen bahwa proyek tidak diharapkan untuk membangun atau berjalan dengan sukses pada konfigurasi platform tertentu.
Misalnya, jika pustaka Anda tidak mendukung pembangunan untuk Linux, Anda akan menggunakan "supports": "!linux".
"configuration"
Memungkinkan untuk menyematkan properti konfigurasi vcpkg di vcpkg.json dalam file. Semua yang ada di configuration dalam properti diperlakukan seolah-olah didefinisikan dalam vcpkg-configuration.json file. Untuk detail selengkapnya, lihat vcpkg-configuration.json dokumentasi.
vcpkg-configuration adalah ejaan lama dari bidang ini tetapi identik.
configuration Memiliki atau vcpkg-configuration didefinisikan dalam vcpkg.json sementara juga memiliki vcpkg-configuration.json file tidak diizinkan dan akan mengakibatkan perintah vcpkg berakhir dengan pesan kesalahan.
Contoh yang disematkan configuration
{
"name": "test",
"version": "1.0.0",
"dependencies": [ "beison", "zlib" ],
"configuration": {
"registries": [
{
"kind": "git",
"baseline": "768f6a3ad9f9b6c4c2ff390137690cf26e3c3453",
"repository": "https://github.com/MicrosoftDocs/vcpkg-docs",
"reference": "vcpkg-registry",
"packages": [ "beicode", "beison" ]
}
],
"overlay-ports": [ "./my-ports/fmt",
"./team-ports"
]
}
"version","version-semver","version-date","version-string"
Versi proyek upstream. String. Diperlukan untuk pustaka, opsional untuk proyek tingkat atas.
Manifes harus berisi paling banyak satu bidang versi. Setiap bidang versi sesuai dengan skema penerapan versi yang berbeda:
-
"version"- Relaxed Semantic Versi 2.0.0, memungkinkan lebih atau kurang dari 3 angka primer. Contoh:1.2.3.4.10-alpha1 -
"version-semver"- Semantik Ketat Versi 2.0.0. Contoh:2.0.1-rc5 -
"version-date"- Tanggal yang diformat sebagaiYYYY-MM-DDdengan urutan numerik terpisah titik opsional. Digunakan untuk paket yang tidak memiliki rilis numerik (misalnya, Live-at-HEAD). Contoh:2022-12-09.314562 -
"version-string"- String arbitrer. Digunakan untuk paket yang tidak memiliki versi yang dapat dipesan. Ini harus jarang digunakan, namun semua port yang dibuat sebelum bidang versi lain diperkenalkan menggunakan skema ini.
Lihat penerapan versi untuk detail selengkapnya.
Bidang Dependensi
Setiap dependensi adalah string atau objek dengan bidang berikut:
| Nama | Diperlukan | Tipe | Description |
|---|---|---|---|
| fitur default | Tidak. | bool | Memerlukan fitur yang tercantum sebagai on-by-default |
| fitur | Tidak. | Objek Fitur[] | Daftar fitur tambahan yang diperlukan |
| tuan rumah | Tidak. | bool | Memerlukan dependensi untuk komputer host alih-alih target |
| Nama | Yes | string | Nama dependensi |
| balei-balei | Tidak. | Ekspresi Platform | Kualifikasi platform mana yang akan menggunakan dependensi |
| version>= | Tidak. | string | Versi minimum yang diperlukan. Versi port diidentifikasi dengan #N akhiran, misalnya, 1.2.3#7 nama port-versi 7. |
String ditafsirkan sebagai objek dengan nama yang didefinisikan ke nilai string.
Dependensi: "default-features"
Boolean yang menunjukkan bahwa proyek bergantung pada fitur 'on-by-default' dependensi. Secara default menjadi true.
Dalam kebanyakan kasus, ini harus didefinisikan ke false dan fitur yang diperlukan harus secara eksplisit bergantung pada.
Dependensi: "features"
Daftar fitur tambahan yang diperlukan. Array objek Fitur. Optional.
Objek Fitur adalah objek dengan bidang berikut:
-
name- Nama fitur. String. Dibutuhkan. -
platform- Ekspresi Platform yang membatasi platform tempat fitur diperlukan. Optional.
String sederhana juga Feature Object valid { "name": "<feature-name>" }setara dengan .
Contohnya,
{
"name": "ffmpeg",
"default-features": false,
"features": [
"mp3lame",
{
"name": "avisynthplus",
"platform": "windows"
}
]
}
ffmpeg Menggunakan pustaka dengan dukungan pengodean mp3. Hanya pada Windows, avisynthplus dukungan juga diaktifkan.
Dependensi: "host"
Boolean yang menunjukkan bahwa dependensi harus dibangun untuk triplet host alih-alih kembar tiga port saat ini. Secara default menjadi false.
Dependensi apa pun yang menyediakan alat atau skrip yang harus "dijalankan" selama build (seperti buildsystem, generator kode, atau pembantu) harus ditandai sebagai "host": true. Ini memungkinkan kompilasi silang yang benar dalam kasus bahwa target tidak dapat dieksekusi -- seperti saat mengkompilasi untuk arm64-android.
Lihat Dependensi host untuk informasi selengkapnya.
Dependensi: "name"
Nama dependensi. String. Dibutuhkan.
Ini mengikuti pembatasan yang sama dengan "name" properti untuk proyek.
Dependensi: "platform"
Ekspresi yang membatasi platform tempat dependensi diperlukan. Ekspresi platform. Optional.
Jika ekspresi tidak cocok dengan konfigurasi saat ini, dependensi tidak akan digunakan. Misalnya, jika dependensi memiliki "platform": "!windows", itu hanya diperlukan saat menargetkan sistem non-Windows.
Dependensi: "version>="
Batasan versi minimum pada dependensi.
Bidang ini menentukan versi minimum dependensi, secara opsional menggunakan #N akhiran untuk juga menentukan versi port minimum jika diinginkan.
Untuk informasi selengkapnya tentang penerapan versi semantik, lihat Penerapan versi.
Bidang Fitur
Setiap fitur adalah objek dengan bidang berikut:
| Nama | Diperlukan | Tipe | Description |
|---|---|---|---|
| deskripsi | Yes | string | Deskripsi fitur |
| Dependensi | Tidak. | Dependensi[] | Daftar dependensi |
| Mendukung | Tidak. | Ekspresi Platform | Kualifikasi yang didukung oleh platform dan konfigurasi fitur |
| lisensi | Tidak. | string atau null | Ekspresi lisensi SPDX |
Lihat dokumentasi Mode manifes untuk gambaran umum konseptual fitur.
Contoh port dengan fitur
{
"features": {
"cbor": {
"description": "The CBOR backend",
"dependencies": [
{
"$explanation": [
"This is how you tell vcpkg that the cbor feature depends on the json feature of this package"
],
"name": "libdb",
"default-features": false,
"features": [ "json" ]
}
]
},
"csv": {
"description": "The CSV backend",
"dependencies": [
"fast-cpp-csv-parser"
]
},
"json": {
"description": "The JSON backend",
"dependencies": [
"jsoncons"
]
}
}
}
Fitur: "dependencies"
Daftar dependensi yang diperlukan oleh fitur . Array objek Dependensi. Optional.
Bidang ini mencantumkan dependensi tambahan yang diperlukan untuk membangun dan menggunakan fitur tersebut.
Fitur: "description"
Deskripsi fitur. String atau array string. Dibutuhkan.
Ini digunakan untuk membantu pengguna menemukan fitur sebagai bagian search dari perintah atau find dan mempelajari apa yang dilakukan fitur tersebut.
Fitur: "supports"
Platform yang didukung dan konfigurasi build untuk fitur tersebut. Ekspresi platform. Optional.
Bidang ini mendanai konfigurasi platform tempat fitur akan dibuat dan berjalan dengan sukses.
Fitur: "license"
Ekspresi lisensi singkat SPDX dari fitur ini. String atau null. Optional. Jika tidak disediakan, lisensinya sama dengan yang ditentukan di bidang lisensi tingkat atas.
Nota
Informasi lisensi yang disediakan untuk setiap paket dalam registri vcpkg mewakili pemahaman terbaik Microsoft tentang persyaratan lisensi. Namun, informasi ini mungkin tidak definitif. Pengguna disarankan untuk memverifikasi persyaratan lisensi yang tepat untuk setiap paket yang ingin mereka gunakan, karena pada akhirnya merupakan tanggung jawab mereka untuk memastikan kepatuhan terhadap lisensi yang berlaku.
Ekspresi Platform
Ekspresi Platform adalah string JSON yang menjelaskan kapan dependensi diperlukan atau saat pustaka atau fitur diharapkan dibuat.
Ekspresi dibangun dari pengidentifikasi primitif, operator logis, dan pengelompokan:
-
!<expr>,not <expr>- negasi -
<expr>|<expr>,<expr>,<expr>- logis OR (kata kunciordicadangkan tetapi tidak valid dalam ekspresi platform) -
<expr>&<expr>,<expr> and <expr>- LOGIS AND -
(<expr>)- pengelompokan/prioritas
Pengidentifikasi berikut didefinisikan berdasarkan pengaturan triplet dan konfigurasi build:
| Pengidentifikasi | Kondisi Triplet |
|---|---|
x64 |
VCPKG_TARGET_ARCHITECTURE == "x64" |
x86 |
VCPKG_TARGET_ARCHITECTURE == "x86" |
arm |
VCPKG_TARGET_ARCHITECTURE
==
"arm" atauVCPKG_TARGET_ARCHITECTURE == "arm64" |
arm32 |
VCPKG_TARGET_ARCHITECTURE == "arm" |
arm64 |
VCPKG_TARGET_ARCHITECTURE == "arm64" |
arm64ec |
VCPKG_TARGET_ARCHITECTURE == "arm64ec" |
wasm32 |
VCPKG_TARGET_ARCHITECTURE == "wasm32" |
mips64 |
VCPKG_TARGET_ARCHITECTURE == "mips64" |
windows |
VCPKG_CMAKE_SYSTEM_NAME
==
""atau atauVCPKG_CMAKE_SYSTEM_NAME == "WindowsStore"VCPKG_CMAKE_SYSTEM_NAME == "MinGW" |
mingw |
VCPKG_CMAKE_SYSTEM_NAME == "MinGW" |
uwp |
VCPKG_CMAKE_SYSTEM_NAME == "WindowsStore" |
xbox |
VCPKG_CMAKE_SYSTEM_NAME
==
"" danXBOX_CONSOLE_TARGET didefinisikan. |
linux |
VCPKG_CMAKE_SYSTEM_NAME == "Linux" |
osx |
VCPKG_CMAKE_SYSTEM_NAME == "Darwin" |
ios |
VCPKG_CMAKE_SYSTEM_NAME == "iOS" |
freebsd |
VCPKG_CMAKE_SYSTEM_NAME == "FreeBSD" |
openbsd |
VCPKG_CMAKE_SYSTEM_NAME == "OpenBSD" |
android |
VCPKG_CMAKE_SYSTEM_NAME == "Android" |
emscripten |
VCPKG_CMAKE_SYSTEM_NAME == "Emscripten" |
qnx |
VCPKG_CMAKE_SYSTEM_NAME == "QNX" |
vxworks |
VCPKG_CMAKE_SYSTEM_NAME == "VxWorks" |
static |
VCPKG_LIBRARY_LINKAGE == "static" |
staticcrt |
VCPKG_CRT_LINKAGE == "static" |
native |
TARGET_TRIPLET == HOST_TRIPLET |
Contoh ekspresi platform
-
Kebutuhan
picosha2untuk sha256 di non-Windows, tetapi dapatkan dari OS di Windows (BCrypt)
{
"name": "picosha2",
"platform": "!windows"
}
- Memerlukan zlib pada arm64 Windows dan amd64 Linux
{
"name": "zlib",
"platform": "(windows & arm64) | (linux & x64)"
}