#14 C++で学ぶ外部ライブラリの基本

C++の外部ライブラリは、他の言語のような統一された仕組みが歴史的になく、複数の方法が混在しているのが特徴です。この記事では、C++における外部ライブラリの使い方の基本を、つまずきやすいポイントも含めて解説します。

vcpkgやConanという比較的新しい管理ツール

近年のC++では、vcpkgやConanといったパッケージ管理ツールが使われるようになってきています。PythonのpipやJavaScriptのnpmのように、コマンド一発でライブラリをダウンロード・ビルドしてくれる便利なツールです。

vcpkg install fmt

ライブラリを使う

#include <fmt/core.h> fmt::print("こんにちは、{}さん\n", name);

ライブラリをインストールしただけでは使えず、上記のように#includeでヘッダファイルを取り込む必要があります。加えて、CMakeなどのビルドツール側の設定ファイル(CMakeLists.txt)にもライブラリ名を追記して、コンパイラにリンクさせる指示を出す必要があります。この「インクルードだけでなくリンク設定も必要」という点は、他の言語からC++に来た人がよくつまずくポイントです。

ヘッダオンリーライブラリという選択肢

ライブラリの中には、ビルド不要でヘッダファイルを#includeするだけで使える「ヘッダオンリーライブラリ」と呼ばれる形式のものもあります。JSONを扱うnlohmann/jsonなどが有名です。ビルド設定を増やしたくない小規模なプロジェクトでは、こうしたヘッダオンリー形式のライブラリを選ぶのも有力な選択肢です。

手動でダウンロードする方法も根強い

C++には、ライブラリのソースコードを直接ダウンロードしてプロジェクトに組み込む、という古くからの方法も今なお広く使われています。プロジェクトによって採用している方法が大きく異なる点が、C++らしい特徴です。

リンクエラーでつまずいたら

C++の初心者がよく遭遇するのが「undefined reference」のようなリンクエラーです。これは多くの場合、ヘッダファイルの#includeはできているものの、ビルド設定側でライブラリ本体(.libや.aファイル)へのリンクが漏れていることが原因です。「コンパイルは通るのにリンクで失敗する」場合は、まずビルド設定ファイルにライブラリが正しく登録されているかを確認しましょう。

C++ならではの注意点

他の言語のように「これを使えば間違いない」という統一された管理ツールがまだ定着しきっていないのがC++の現状です。参加するプロジェクトが、どの方法(vcpkg/Conan/手動/ヘッダオンリー)でライブラリを管理しているかを最初に確認することが、C++開発では特に重要になります。READMEやビルド設定ファイルを最初に読む習慣をつけておくと安心です。

まとめ

C++の外部ライブラリはvcpkg・Conanなどのツールや、ヘッダオンリー形式、手動での組み込みなど複数の方法があります。それぞれの特徴とリンク設定の仕組みを理解し、プロジェクトの方針を確認しながら進めましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

C++をもっと学びたい方には「新・明解C++入門編」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本