2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M1 MacでC/C++言語の環境構築,BoostとEigenライブラリを使えるようにした

Last updated at Posted at 2023-08-31

はじめに

先日,初めて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を用意しました.

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をリンクさせます.
概要や具体的な方法は以下の記事や他の記事を参考にしてみてください.

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?