0Pricing
C++ Academy · レッスン

依存関係に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 spdlog

CMakeでvcpkgをリンクする

CMakeの構成時にツールチェーンファイルを渡します。これにより、find_packageが通常どおり機能します。

cmake -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake

vcpkg.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=missing

conanfile.txtの例

requires、generators、optionsを列挙します。

[requires]
fmt/10.1.1
spdlog/1.12.0

[generators]
CMakeDeps
CMakeToolchain

ConanとCMakeの統合

installを実行すると、ConanがCMakeファイルを生成します。ツールチェーンファイル経由で使用するか、生成されたCMakeファイルをインクルードして使用します。

cmake -B build -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake

FetchContent: 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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. CMakeプロジェクトの構成とCMakeLists.txt
  2. ターゲット、リンク、可視性:PUBLIC、PRIVATE
  3. 依存関係にvcpkgとConanを使う
  4. IDEファイルの生成とクロスプラットフォームビルド
← C++ Academyに戻る