vcpkg.json リファレンス
vcpkg でマニフェストを使用する方法の概要については、「マニフェスト モード」を参照してください。
マニフェストは厳密な JSON ドキュメントです。 C++スタイルのコメント (//
) や末尾のコンマを含めることはできません。 ただし、最初 $
のフィールド名を使用して、明確に定義されたキーのセットを持つ任意のオブジェクトにコメントを書き込むことができます。 これらのコメント フィールドは、ユーザー定義キー (など "features"
) を許可するオブジェクトでは使用できません。
最新の JSON スキーマは 、https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json Visual Studio や Visual Studio Code などの JSON スキーマがサポートされている IDE では、このファイルを使用してオートコンプリートと構文のチェックを提供できます。 ほとんどの IDE では、この URL に設定"$schema"
vcpkg.json
する必要があります。
例
{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
"dependencies": [
"boost-system",
{
"name": "cpprestsdk",
"default-features": false
},
"libxml2",
"yajl"
]
}
この例では、を使用するboost-system
cpprestsdk
libxml2
アプリケーションのマニフェストを示します。yajl
この例には、IDE の $schema
検証とオートコンプリートを改善するための参照も含まれています。
最上位フィールド
名前 | Required | タイプ | 説明 |
---|---|---|---|
組み込みベースライン | いいえ | string | 最上位レベルとしてビルドするときに使用するバージョン ピン |
default-features | いいえ | Feature オブジェクト[] | 既定で表示される 機能 を必須にする |
dependencies | いいえ | Dependency[] | このプロジェクトのビルドと使用に必要な依存関係の一覧 |
説明 | ライブラリ | string または string[] | プロジェクトの説明 |
ドキュメント | いいえ | string | アップストリーム プロジェクトのドキュメントへの URI |
features | いいえ | {string: Feature} | プロジェクトのユーザーが使用できるオプション機能 |
homepage | いいえ | string | アップストリーム プロジェクトのホームページへの URI |
license (ライセンス) | いいえ | 文字列または null 値 | SPDX ライセンス式 |
メインコンテナー | いいえ | string または string[] | パッケージ ファイルの保守担当者 |
name | ライブラリ | string | プロジェクト名 |
overrides | いいえ | Override[] | 最上位レベルとしてビルドするときに使用するバージョン ピン |
port-version | いいえ | integer | ポート ファイルのリビジョン |
サポート | いいえ | プラットフォーム式 | サポートされているプラットフォームとビルドの構成 |
version version-semver version-date version-string |
ライブラリ | string | アップストリーム バージョン情報 |
"builtin-baseline"
既定のレジストリでバージョン解決用を "baseline"
指定するためのショートカット。 文字列。 省略可能。最上位のプロジェクトでのみ使用されます。
このフィールドは、マニフェストの https://github.com/microsoft/vcpkg グローバルな最小バージョン情報を提供するコミットを示します。 これは、指定 "default-registry"
されていないバージョン管理を使用する最上位レベルのマニフェスト ファイルに必要です。 これは、既定のレジストリを次のように定義するのと同じセマンティックを持っています。
{
"default-registry": {
"kind": "builtin",
"baseline": "<value>"
}
}
セマンティックの詳細については、 バージョン管理 と レジストリ の使用に関するページを参照してください。
"default-features"
追加のカスタマイズなしで適切な動作を行うのに必要な一連の機能。
既定の機能は、次のいずれかの場合に自動的に選択されます。
- ポートとポートの間の依存関係には、
"default-features": true
既定値があります。 - 最上位レベルのマニフェストには、次のポート
"default-features": false
の依存関係がありません。
既定の機能では、最上位のプロジェクトでは認識できない推移的な依存関係に対して "既定の" 構成を提供する特定のケースが処理されます。 他のユーザーが使用するポートは、ほとんどの場合、依存関係に使用 "default-features": false
する必要があります。
フィーチャー オブジェクトを使用して、プラットフォーム固有の既定の機能を定義できます。
{
"name": "my-port",
"default-features": [
"png",
{
"name": "winssl",
"platform": "windows"
}
]
}
機能の詳細については、以下を参照してください "features"
。
"description"
ポートの説明。 文字列または文字列の配列。 ライブラリの場合は必須。トップレベル プロジェクトの場合は省略可能です。
これは、ユーザーがライブラリをコマンドの一部として検出し、ライブラリのsearch
find
動作を学習するのに役立ちます。
"dependencies"
プロジェクトに必要な依存関係の一覧。 依存関係オブジェクトの配列。 省略可能。
このフィールドには、ライブラリまたはアプリケーションのビルドと使用に必要なすべての依存関係が一覧表示されます。
ポートの依存関係の例
"dependencies": [
{
"name": "arrow",
"default-features": false,
"features": [
"json",
{
"name": "mimalloc",
"platform": "windows"
}
]
},
"boost-asio",
"openssl",
{
"name": "picosha2",
"platform": "!windows"
}
]
"documentation"
アップストリーム プロジェクトのドキュメントへの URI。 文字列。 省略可能。
"features"
プロジェクトの ユーザーが使用できる機能 。 フィーチャー オブジェクトへの名前のマップ。 省略可能。
機能は、ビルドに動作と依存関係を追加するブール型フラグです。 機能の詳細については、 マニフェストの概念に関するドキュメント を参照してください。
"homepage"
プロジェクトのホームページへの URI。 文字列。 省略可能。
"license"
プロジェクトの SPDX の短いライセンス式。 文字列または null。 省略可能。
SPDX "license"
3.19 ライセンス式であるか、ユーザーがデプロイされた/share/<port>/copyright
ファイルを読み取る必要があることを示す必要がありますnull
。 DocumentRefs はサポートされていません。
ライセンス文字列の例
MIT
LGPL-2.1-only AND BSD-2-Clause
GPL-2.0-or-later WITH Bison-exception-2.2
EBNF
vcpkg は、次 の EBNF を使用してライセンス フィールドを解析します。
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"
パッケージ メインコンテナーの一覧。 文字列または文字列の配列。 省略可能。
"GivennameSurname<email>" という形式を使用することをお勧めします。
"name"
プロジェクトの名前です。 文字列。 ライブラリの場合は必須。トップレベル プロジェクトの場合は省略可能です。
名前は、小文字の ASCII 文字、数字、またはハイフン (-
) である必要があります。 先頭と末尾をハイフンにすることはできません。 ライブラリは、組織名またはフレームワーク名をプレフィックスとして含めたり、msft-
boost-
ユーザーが関連するライブラリを見つけて説明したりできるようにすることをお勧めします。
たとえば、正式な名前のライブラリに名前Boost.Asio
boost-asio
を付ける場合があります。
"overrides"
特定の依存関係に使用する正確なバージョン ピン。 Override オブジェクトの配列。 省略可能。
"overrides"
推移的なマニフェスト (つまり依存関係から) は無視されます。 最上位レベルのプロジェクトによって定義されたオーバーライドのみが使用されます。
名前 | Required | タイプ | 説明 |
---|---|---|---|
name | はい | string | ポート名 |
version | はい | string | ピン留めするアップストリーム バージョン情報。 |
version-semver version-date version-string |
はい | string | 特定のスキームの名前付けに代 version わる非推奨の方法。 |
port-version | いいえ | integer | ポート ファイルのリビジョンをピン留めします。 バージョン自体への配置を優先して非推奨になりました。 |
"port-version"
でサフィックス"version"
として#N
指定する必要があります。 たとえば、 "version": "1.2.3#7"
バージョン 1.2.3、ポート バージョン 7 という名前を付けます。
セマンティックの詳細については、バージョン管理も参照してください。
バージョンのオーバーライドの例
"overrides": [
{
"name": "arrow", "version": "1.2.3#7"
},
{
"name": "openssl", "version": "1.1.1h#3"
}
]
"port-version"
パッケージ ファイルのリビジョンを識別するバージョン サフィックス。 整数。 既定値は 0
です。
アップストリーム ソース "port-version"
バージョンを変更しないポートの新しいバージョンが発行されるたびにインクリメントする必要があります。 アップストリーム ソース バージョンが変更されると、バージョン フィールドが変更され"port-version"
、リセット 0
(または削除) されます。
詳細については 、バージョン管理を 参照してください。
"supports"
サポートされているプラットフォームとビルドの構成。 プラットフォーム式。 省略可能。
このフィールドは、プロジェクトが特定のプラットフォーム構成で正常にビルドまたは実行されることが想定されていないことを示します。
たとえば、ライブラリで Linux 用のビルドがサポートされていない場合は、"supports": "!linux"
"vcpkg-configuration"
vcpkg 構成プロパティをファイル内に vcpkg.json
埋め込むことができます。 プロパティ内の vcpkg-configuration
すべてが、ファイル内で vcpkg-configuration.json
定義されているかのように扱われます。 詳細については、ドキュメントを vcpkg-configuration.json
参照してください。
ファイルを vcpkg-configuration
持つ間に vcpkg.json
定義を持つこと vcpkg-configuration.json
は許可されず、vcpkg コマンドがエラー メッセージで終了します。
埋め込み例 vcpkg-configuration
{
"name": "test",
"version": "1.0.0",
"dependencies": [ "beison", "zlib" ],
"vcpkg-configuration": {
"registries": [
{
"kind": "git",
"baseline": "dacf4de488094a384ca2c202b923ccc097956e0c",
"repository": "https://github.com/northwindtraders/vcpkg-registry",
"packages": [ "beicode", "beison" ]
}
],
"overlay-ports": [ "./my-ports/fmt",
"./team-ports"
]
}
"version"
、"version-semver"
、、 "version-date"
"version-string"
アップストリーム プロジェクトのバージョン。 文字列。 ライブラリの場合は必須。トップレベル プロジェクトの場合は省略可能です。
マニフェストには、最大 1 つのバージョン フィールドが含まれている必要があります。 各バージョン フィールドは、異なるバージョン管理 スキームに対応します。
"version"
- 緩やかな セマンティック バージョン 2.0.0。3 つ以下のプライマリ番号を許可します。 例:1.2.3.4.10-alpha1
"version-semver"
- 厳密な セマンティック バージョン 2.0.0。 例:2.0.1-rc5
"version-date"
- 省略可能な末尾のドット区切りの数値シーケンスと同様YYYY-MM-DD
に書式設定された日付。 数値リリースがないパッケージ (Live-at-HEAD など) に使用されます。 例:2022-12-09.314562
"version-string"
- 任意の文字列。 注文可能なバージョンがないパッケージに使用されます。 これはまれに使用する必要があります。ただし、他のバージョン フィールドが導入される前に作成されたすべてのポートでは、このスキームが使用されます。
詳細については 、バージョン管理を 参照してください。
依存関係フィールド
各依存関係は、次のフィールドを持つ文字列またはオブジェクトです。
名前 | Required | タイプ | 説明 |
---|---|---|---|
default-features | いいえ | [bool] | 既定で表示される機能を必須にする |
features | いいえ | Feature オブジェクト[] | 必要な追加機能の一覧 |
host | いいえ | [bool] | ターゲットではなくホスト マシンの依存関係を要求する |
name | はい | string | 依存関係の名前 |
platform | いいえ | プラットフォーム式 | 依存関係を使用するプラットフォームの修飾子 |
version>= | いいえ | string | 最低限必要なバージョン。 ポート バージョンは、1.2.3#7 たとえばポート バージョン 7 という名前のサフィックスで#N 識別されます。 |
文字列は、文字列値に定義された名前を持つオブジェクトとして解釈されます。
依存関係: "default-features"
プロジェクトが依存関係の "既定でオン" の機能に依存していることを示すブール値。 既定値は true
です。
ほとんどの場合、これは定義する false
必要があり、必要な機能は明示的に依存する必要があります。
依存関係: "features"
必要な追加機能の一覧。 Feature オブジェクトの配列。 省略可能。
フィーチャー オブジェクトは、次のフィールドを持つオブジェクトです。
name
- 機能の名前。 文字列。 必須。platform
- 機能が必要なプラットフォームを制限するプラットフォーム式。 省略可能。
単純な文字列は、次に相当する{ "name": "<feature-name>" }
有効なFeature Object
文字列でもあります。
たとえば、 にします。
{
"name": "ffmpeg",
"default-features": false,
"features": [
"mp3lame",
{
"name": "avisynthplus",
"platform": "windows"
}
]
}
mp3 エンコードが ffmpeg
サポートされているライブラリを使用します。 Windows でのみ、 avisynthplus
サポートも有効になります。
依存関係: "host"
現在のポートのトリプレットではなく、ホストトリプレットの依存関係を構築する必要があることを示すブール値。 既定値は false
です。
ビルド中に "実行" する必要があるツールまたはスクリプト (ビルド システム、コード ジェネレーター、ヘルパーなど) を提供する依存関係は、次のようにマーク "host": true
する必要があります。 これにより、ターゲットが実行可能でない場合 (コンパイル時など) に適切なクロスコンパイルが arm64-android
可能になります。
詳細については、「 ホストの依存関係 」を参照してください。
依存関係: "name"
依存関係の名前。 文字列。 必須。
これは、プロジェクトのプロパティと "name"
同じ制限に従います。
依存関係: "platform"
依存関係が必要なプラットフォームを制限する式。 プラットフォーム式。 省略可能。
式が現在の構成と一致しない場合、依存関係は使用されません。 たとえば、依存関係がある場合は "platform": "!windows"
、Windows 以外のシステムを対象とする場合にのみ必要です。
依存関係: "version>="
依存関係の最小バージョン制約。
このフィールドでは、依存関係の最小バージョンを指定します。必要に応じてサフィックスを #N
使用して、必要に応じて最小ポート バージョンも指定します。
バージョン管理セマンティクスの詳細については、「バージョン管理」を参照してください。
特徴フィールド
各機能は、次のフィールドを持つオブジェクトです。
名前 | Required | タイプ | 説明 |
---|---|---|---|
説明 | イエス | string | 機能の説明 |
dependencies | いいえ | Dependency[] | 依存関係の一覧 |
サポート | いいえ | プラットフォーム式 | 機能がサポートするプラットフォームと構成の修飾子 |
license (ライセンス) | いいえ | 文字列または null 値 | SPDX ライセンス式 |
機能の 概念の概要については、マニフェスト モード のドキュメントを参照してください。
機能を含むポートの例
{
"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"
]
}
}
}
機能: "dependencies"
機能に必要な依存関係の一覧。 依存関係オブジェクトの配列。 省略可能。
このフィールドには、この機能をビルドして使用するために必要な追加の依存関係が一覧表示されます。
機能: "description"
機能の説明。 文字列または文字列の配列。 必須。
これは、ユーザーが機能をコマンドの一部として検出し、その機能の動作をsearch
find
学習するのに役立ちます。
機能: "supports"
この機能でサポートされているプラットフォームとビルドの構成。 プラットフォーム式。 省略可能。
このフィールドには、機能が正常にビルドされて実行されるプラットフォーム構成が記載されています。
機能: "license"
機能の SPDX の短いライセンス式。 文字列または null。 省略可能。 指定しない場合、ライセンスは最上位レベル のライセンス フィールドで指定したの と同じです。
プラットフォーム式
プラットフォーム式は、依存関係が必要な場合、またはライブラリまたは機能のビルドが必要な場合を記述する JSON 文字列です。
式は、プリミティブ識別子、論理演算子、およびグループ化から構築されます。
!<expr>
、not <expr>
- 否定<expr>|<expr>
、<expr>||<expr>
<expr>,<expr>
- 論理 OR (キーワード (keyword)or
は予約されていますが、プラットフォーム式では無効です)<expr>&<expr>
、<expr>&&<expr>
-<expr> and <expr>
論理 AND(<expr>)
- グループ化/優先順位
次の識別子は、トリプレット設定とビルド構成に基づいて定義されます。
Identifier | トリプレット条件 |
---|---|
x64 |
VCPKG_TARGET_ARCHITECTURE == "x64" |
x86 |
VCPKG_TARGET_ARCHITECTURE == "x86" |
arm |
VCPKG_TARGET_ARCHITECTURE == "arm" または VCPKG_TARGET_ARCHITECTURE == "arm64" |
arm32 |
VCPKG_TARGET_ARCHITECTURE == "arm" |
arm64 |
VCPKG_TARGET_ARCHITECTURE == "arm64" |
wasm32 |
VCPKG_TARGET_ARCHITECTURE == "wasm32" |
windows |
VCPKG_CMAKE_SYSTEM_NAME == "" またはVCPKG_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 == "" がXBOX_CONSOLE_TARGET 定義されています。 |
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" |
static |
VCPKG_LIBRARY_LINKAGE == "static" |
staticcrt |
VCPKG_CRT_LINKAGE == "static" |
native |
TARGET_TRIPLET == HOST_TRIPLET |
プラットフォーム式の例
- Windows 以外の場合は sha256 が必要
picosha2
ですが、Windows 上の OS から取得します (BCrypt)
{
"name": "picosha2",
"platform": "!windows"
}
- arm64 Windows および amd64 Linux で zlib を要求する
{
"name": "zlib",
"platform": "(windows & arm64) | (linux & x64)"
}
vcpkg
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示