【ブイシーパッケージ】

vcpkg とは?

💡 C++のライブラリ地獄から救い出してくれる救世主
📌 このページのポイント
vcpkg によるC++ライブラリ管理 従来の方法 1. ソースコードをダウンロード 2. ビルド設定を書く 3. コンパイル&インストール 4. パスを設定 ※ OSやコンパイラごとに手順が異なる vcpkg を使う場合 vcpkg install openssl コマンド一発で完了! 依存関係も自動で解決 マニフェストモード(vcpkg.json) vcpkg.json: {"dependencies": ["openssl", "zlib", "curl"]} → CMakeビルド時に自動インストール。チーム全員が同じ環境を再現可能 Windows / Linux / macOS クロスプラットフォーム対応
vcpkgによるC++ライブラリ管理のイメージ
ひよこ ひよこ

C++にもnpmみたいなパッケージマネージャーがあるの?

ペンギン先生 ペンギン先生

そう、それがvcpkgだよ。C++はずっと「ライブラリインストールが大変」と言われてきたんだけど、vcpkgのおかげで vcpkg install openssl のようにコマンド一発でライブラリを入れられるようになったんだ

ひよこ ひよこ

ライブラリインストールって何が大変だったの?

ペンギン先生 ペンギン先生

C++ライブラリは自分でソースをダウンロードして、ビルド設定を書いて、コンパイルして、パスを通して…という手順が必要だったんだ。OSやコンパイラごとに手順が違うし、依存ライブラリも自分で揃えないといけない。vcpkgはこの全部を自動でやってくれるよ

ひよこ ひよこ

CMakeと連携するってどういうこと?

ペンギン先生 ペンギン先生

vcpkg installでライブラリを入れた後、CMakefind_packageで自動的に見つけてくれるんだ。CMakeのツールチェインファイルにvcpkgのパスを設定するだけで、あとは普通にfind_packageを書けばOK。ビルドシステムとの統合がスムーズだよ

ひよこ ひよこ

マニフェストモードって何?

ペンギン先生 ペンギン先生

vcpkg.jsonというファイルにプロジェクトの依存ライブラリを書いておくと、CMakeのビルド時に自動でインストールしてくれるモードだよ。npmのpackage.jsonと同じ発想で、チームメンバーが同じ環境を再現できるんだ。バージョンの固定もできるから、再現性の高いビルドが実現できるね

ひよこ ひよこ

Conanっていう似たツールもあるって聞いたけど、どう違うの?

ペンギン先生 ペンギン先生

Conanはソースからのビルドだけでなくバイナリキャッシュの配布が得意で、CI/CDでのビルド時間短縮に強いよ。vcpkgはMicrosoftが後ろ盾でVisual Studioとの統合が完璧。最近はvcpkgもバイナリキャッシュに対応して差が縮まっているけど、Windowsメインならvcpkg、クロスプラットフォームのCI重視ならConanという使い分けが多いね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「vcpkg」って出てきたら「C/C++ライブラリを簡単にインストールできるパッケージマネージャー」と思えればだいたいOK!
📖 おまけ:英語の意味
「vcpkg」 = Visual C++ Package Manager
💬 もともとVisual C++向けだったけど、今はGCCやClangなどどのコンパイラでも使えるよ。「vc」はVisual C++の名残だね
← 用語集にもどる