2022年6月30日

C/C++ の簡易パッケージマネージャを作った話

概要
    ある程度大きなソフトウェアを開発するには, ソフトウェアを機能ごとにモジュール化して, 機能ごとに開発すると,効率的に分業できる. また,インターフェースに互換性があれば, 複数ライブラリをベンチマークして, 機能ごとに最もユースケースに合うライブラリを利用することもできる.
  パッケージ管理において Python は非常に参考になる言語で, 例えば,requirements.txt にインストールしたいライブラリとバージョンを記載して pip を実行すれば,ものの数分で環境が構築できる. しかも,venv などを利用すれば仮想環境として構築できるため, 同じ PC の中に複数プロジェクト向けの環境を用意できる. こうした仕組みは是非とも C++ にも欲しい.
    既存の C++ 向けパッケージマネージャーもあるが,なぜか pip でのインストールが必要だったり,デファクトスタンダードというレベルのものはないため, C/C++ 向けの簡易パッケージマネージャーを試しに開発してみることにした.

※ C++ で既存のパッケージマネージャーとしては ConanVcpkg, Hunter, Buckaroo, poac などがある.ここで紹介するのは,趣味で作ったおもちゃの(プロダクトレベルでない)パッケージマネージャーなので,本格的に利用する場合は,よくよく各パッケージマネージャーを比較検討することをお勧めする.
※ 2013 年以降,docker の登場により,C++ の環境としても構築しやすくなってはいるが, docker の主眼は(パッケージ管理ではなく)環境そのものの仮想化なので,別の問題として考える.