はじめに
先日,初めてM1 MacでC/C++言語の環境構築を行いました.
Homebrewを用いてgccとg++のコンパイラを機能させる所までは,以下の参考文献のお陰様で,問題なく進むことが出来ました.
次にHomebrewを用いてboostとeigenをインストールしました.
$ brew install ライブラリ名
ここで,これらサードパーティ・ライブラリを永続的にインクルード(include),認識させるために多少の試行錯誤がありました.
日本語,英語両者で出来る限りの検索をしましたが,情報が少なく,見つけても古い情報で良く分からなかったです.自分の知識が足りなかった点もあると思います.
そこで上手く行った例をここに記録しておきたいと思います.
永続的にパスを追加する
.zshrcファイルに以下の一文を追加するだけで永続的にライブラリを認識してくれました.
export CPATH=/opt/homebrew/include/
設定の再読み込みは以下のコマンドで行います.
$ source ~/.zshrc
これで毎回コンパイルオプションにライブラリのパスを指定しなくても,ライブラリを認識してくれるようになります.
因みに
Boostライブラリのインストール場所は
/opt/homebrew/Cellar/boost/1.82.0_1/include/
Eigenライブラリのインストール場所は
/opt/homebrew/Cellar/eigen/3.4.0_1/include/eigen3/
にありました.
テストファイル
動作確認のために以下のようなテストファイルtest.cppを用意しました.
#include <stdio.h>
#include <iostream>
#include <boost/version.hpp>
#include <eigen3/Eigen/Core>
int main() {
printf("Hello World\n");
std::cout << "boostバージョン:" << BOOST_VERSION << std::endl;
std::cout << "boostライブラリバージョン:" << BOOST_LIB_VERSION << std::endl;
return 0;
}
このtest.cppをコンパイル$ g++ test.cpp
& 実行$ ./a.out
すると,以下のように出力されました.
Hello World
boostバージョン:108200
boostライブラリバージョン:1_82
Eigenライブラリに関して注意
上記のテストファイルではEigenライブラリを#include <eigen3/Eigen/Core>
で認識させてますが,多くの場合,#include <Eigen/Core>
で用いると思います.
このように記載された場合でも問題なく動作させる方法の1つとして,シンボリックリンクが挙げられます.
/opt/homebrew/Cellar/eigen/3.4.0_1/include/eigen3/
と/opt/homebrew/Cellar/eigen/3.4.0_1/include/eigen3/Eigen
をリンクさせます.
概要や具体的な方法は以下の記事や他の記事を参考にしてみてください.