リモート Mac CIvcpkgFetchContent の経路と並列を固定する実務ガイドです。直結/ミラー/自前キャッシュbuiltin-baseline と切断更新を一枚化しました。ホームブログ一覧・大容量取得はHF 転送表

課題:二重取得・baseline 漂移・並列と帯域の三層

  • 二重取得:同種を二系統から取らないよう README で供給元を一本化する。
  • baselinebuiltin-baseline が無いと registry とバイナリ条件がブランチ間でズレる。
  • 並列:取得律速なのに本数と -j だけ上げると外向きが先に飽和する。

比較表:直結/ミラー/自前バイナリキャッシュ

経路向き先の例長所注意点
直結公式 Git/registry単純RTT と帯域で不安定
ミラー社内 Git/registry審査付きで安定遅延と baseline 管理が要る
自前キャッシュVCPKG_BINARY_SOURCES取得を大きく短縮triplet・compiler・vcpkg コミットをキーへ

決定マトリクス(シナリオ別のおすすめ組合せ)

シナリオvcpkg 側FetchContent 側並列の目安
社内完結社内 registry+BC社内 GIT_REPOSITORY+SHA取得は直列寄り
跨境律速BC 優先+baseline 固定GIT_SHALLOW+切断 ON本数を抑え BC を温める
オフライン内部ポート寄せFULLY_DISCONNECTED+事前展開外向き最小・手間増

実行パラメータとコマンド例

名前役割
VCPKG_ROOT/toolchainvcpkg 接続-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
VCPKG_FEATURE_FLAGSmanifest/binarycachingbinarycaching,manifests
VCPKG_BINARY_SOURCESキャッシュclear;files,/var/tmp/vcpkg-bc,readwrite
FetchContent 切断再取得抑止-DFETCHCONTENT_UPDATES_DISCONNECTED=ON など
最小例(arm64-osx)
export VCPKG_ROOT="$HOME/vcpkg" VCPKG_DEFAULT_TRIPLET=arm64-osx
export VCPKG_FEATURE_FLAGS=binarycaching,manifests
export VCPKG_BINARY_SOURCES='clear;files,/var/tmp/vcpkg-bc,readwrite'
"$VCPKG_ROOT/vcpkg" install
cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE="$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" \
  -DFETCHCONTENT_UPDATES_DISCONNECTED=ON
cmake --build build -j"$(sysctl -n hw.ncpu)"

vcpkg.jsonbuiltin-baseline と registry は同じ PR でレビューする。

lockfile 一貫性の検収チェックリスト

  • baseline:専用 PR のみ更新しポート差分を目視する。
  • FetchContentGIT_TAG は SHA 固定。GIT_SHALLOW とミラー側ポリシーを一致させる。
  • キャッシュ鍵:vcpkg コミット・vcpkg.json ダイジェスト・triplet・Xcode メジャーを CI キーへ。

引用目安:外向き律速なら本数×-jを先に下げる。VCPKG_MAX_CONCURRENCY は四〜八から壁時計比較。populate 後に FETCHCONTENT_UPDATES_DISCONNECTED を ON。

meta title/description テンプレート

Title 型2026|{製品}|vcpkg×FetchContent|リモートMacCI|MacPullDescription 型{読者}向け。直結/ミラー/自前BC、baseline、切断、並列、検収。{補足120字以内}。 先頭に年号と主要ツール名を置くと検索意図と一致しやすいです。

手順チェックリスト(導入〜検証)

1

runner から curl -I で到達性とプロキシを確認する。

2

vcpkg.json の baseline と VCPKG_BINARY_SOURCES をコミットする。

3

toolchain 読込後、FetchContent の GIT_TAG を固定しレビューに載せる。

4

クリーン一回→BC ON でログと所要を比較する。

5

PR で baseline 差分と所要上限を必須ゲートにする。

FAQ

vcpkg と FetchContent で二重ビルドになりますか?

なり得ます。供給元を README で一本化してください。

FULLY_DISCONNECTED で失敗する

依存を事前展開するか、CI キャッシュで _deps を復元してから ON にします。

バイナリキャッシュにヒットしない

triplet・ツールチェーン・vcpkg コミットが生成時とズレていることが多いです。

まとめ:経路・baseline・並列の三本柱

経路は表で決め、baseline とタグでロックし、並列は帯域に合わせて段階的に上げます。

地域差があるためリモート Mac を短期利用し同一 vcpkg.json の取得と BC ヒットを手元 runner と比較するのが近道です。ホーム購入(日本)料金ヘルプブログ一覧はログイン不要で閲覧できる範囲です。

vcpkg × FetchContent × リモート Mac

跨境依存の検証は、地理に近いノードで一度通すのが近道

ヘルプ購入(日本)ホームブログ一覧はログイン不要です。跨境の大容量取得はHF 転送表も参照ください。