はじめに
最近C++を勉強中なのですが,自分のWindowsPCのWSL環境でC++を書くことが多くなってきたので,外部ライブラリをどう管理するのがいいのか調査しました.その内容を備忘録的に残しておきます.
C++にはパッケージマネージャはあるのか
上記リンクの質問の回答にもありますが,結論から言うとPythonでいうpipのようなパッケージマネージャーはあります.ただ僕の認識だとそれほどメジャーではない気がします.ということで今のところ使わない方針です.
有名なものは大体aptコマンドからインストールできるように配布されている
Ubuntu(WSL)ならaptが使えるし,macならbrewが使えます.aptだと外部ライブラリは「○○-dev」という風な名前で配布されています.これでインストールすれば,「適切な位置」にパッケージを配置してくれます.
この「適切な位置」は,aptの場合は"/usr/include/"
以下になります.
Githubなどから落としてきて自分で配置する場合
aptなどのコマンドを使用せずGithubからcloneして解凍などする場合は,"/usr/local/include/"
に入れるのが普通なようです.
例えば有名な外部ライブラリであるEigenの公式ページには以下のように書いています.
On Linux or Mac OS X, another option is to symlink or copy the Eigen folder into /usr/local/include/. This way, you can compile the program with:
$ g++ my_program.cpp -o my_program
リンク時にライブラリのパスがわからない問題
apt-fileコマンドという便利なコマンドがあります.これをインストールしておけば,ファイルの名前さえ分かっていれば検索でライブラリの位置がわかります.
"/usr/include/"
に入っているのか,"/usr/local/include/"
に入れたのかわからなくなったときに便利なコマンドです.