次の方法で共有


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-systemcpprestsdklibxml2アプリケーションのマニフェストを示します。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"

追加のカスタマイズなしで適切な動作を行うのに必要な一連の機能。

既定の機能は、次のいずれかの場合に自動的に選択されます。

  1. ポートとポートの間の依存関係には、 "default-features": true 既定値があります。
  2. 最上位レベルのマニフェストには、次のポート "default-features": falseの依存関係がありません。

既定の機能では、最上位のプロジェクトでは認識できない推移的な依存関係に対して "既定の" 構成を提供する特定のケースが処理されます。 他のユーザーが使用するポートは、ほとんどの場合、依存関係に使用 "default-features": false する必要があります。

フィーチャー オブジェクトを使用して、プラットフォーム固有の既定の機能を定義できます。

{
  "name": "my-port",
  "default-features": [
    "png",
    {
      "name": "winssl",
      "platform": "windows"
    }
  ]
}

機能の詳細については、以下を参照してください "features"

"description"

ポートの説明。 文字列または文字列の配列。 ライブラリの場合は必須。トップレベル プロジェクトの場合は省略可能です。

これは、ユーザーがライブラリをコマンドの一部として検出し、ライブラリのsearchfind動作を学習するのに役立ちます。

"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.Asioboost-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": "<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"

機能説明。 文字列または文字列の配列。 必須。

これは、ユーザーが機能をコマンドの一部として検出し、その機能の動作をsearchfind学習するのに役立ちます。

機能: "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)"
}