依存関係にvcpkgとConanを使う
vcpkgとConanで外部ライブラリを取得し、CMakeに統合します。
「依存関係にvcpkgとConanを使う」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。
なぜパッケージマネージャーなのか
C++の依存関係を手動でダウンロードしてビルドするのは大変です。パッケージマネージャーを使うと、サードパーティライブラリの取得、ビルド、設定を自動化できます。
主要な2つの選択肢
C++の主要なパッケージマネージャーは次の2つです。
- vcpkg — Microsoftが支援し、ソースからのみ利用し、CMakeと統合できます
- Conan — オープンソースで、バイナリをサポートし、より柔軟です
vcpkgのセットアップ
vcpkgリポジトリをクローンしてブートストラップします。CMakeの呼び出し時にツールチェーンファイルを設定します。
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && ./bootstrap-vcpkg.sh
./vcpkg install fmt spdlogCMakeでvcpkgをリンクする
CMakeの構成時にツールチェーンファイルを渡します。これにより、find_packageが通常どおり機能します。
cmake -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmakevcpkg.jsonを使用する(マニフェストモード)
vcpkg.jsonファイルに依存関係を宣言します。vcpkgがプロジェクトごとに依存関係をインストールします。
{
"name": "my-app",
"version-string": "0.1.0",
"dependencies": ["fmt", "spdlog", "nlohmann-json"]
}Conanのセットアップ
pipでConanをインストールし、conanfile.txtまたはconanfile.pyを作成します。
pip install conan
conan profile detect
conan install . --build=missingconanfile.txtの例
requires、generators、optionsを列挙します。
[requires]
fmt/10.1.1
spdlog/1.12.0
[generators]
CMakeDeps
CMakeToolchainConanとCMakeの統合
installを実行すると、ConanがCMakeファイルを生成します。ツールチェーンファイル経由で使用するか、生成されたCMakeファイルをインクルードして使用します。
cmake -B build -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmakeFetchContent: CMakeネイティブの代替手段
単純なケースでは、CMakeに組み込みのFetchContentを使用して、構成時に依存関係をダウンロードして追加できます。
include(FetchContent)
FetchContent_Declare(fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG 10.1.1
)
FetchContent_MakeAvailable(fmt)
target_link_libraries(myapp PRIVATE fmt::fmt)ツールの選択
簡単な指針は次のとおりです。
- 小規模なプロジェクト →
FetchContent - 大規模なプロジェクトで依存関係が単純 →
vcpkg - 複雑なビルドでバイナリキャッシュを使用 →
Conan
再現可能なビルド
マニフェストには特定のバージョンを固定してください。ロックファイル(conan.lock)に解決済みの正確なバージョンを記録すると、ビルドを再現できます。
バイナリのキャッシュ
Conanとvcpkgはどちらもバイナリキャッシュをサポートしているため、CIビルドが桁違いに高速になります。チームで共有するキャッシュを設定してください。
確認問題
外部ツールを必要とせず、構成時に依存関係をダウンロードしてビルドするCMakeの仕組みはどれですか。
まとめ
vcpkgとConanはC++の依存関係管理を自動化します。CMakeのFetchContentは軽量な代替手段です。バージョンを固定し、バイナリをキャッシュして、CMakeではfind_packageを使ってインストール済みのライブラリを利用してください。
よくある質問
「依存関係にvcpkgとConanを使う」レッスンは無料ですか?
はい。「依存関係にvcpkgとConanを使う」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。
「依存関係にvcpkgとConanを使う」で何を学びますか?
vcpkgとConanで外部ライブラリを取得し、CMakeに統合します。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C++ Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「依存関係にvcpkgとConanを使う」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC++ Academyレッスンでコードを書いて実行できますか?
はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CMakeプロジェクトの構成とCMakeLists.txt
- ターゲット、リンク、可視性:PUBLIC、PRIVATE
- 依存関係にvcpkgとConanを使う
- IDEファイルの生成とクロスプラットフォームビルド