概要
自作ヘッダーなどをインクルードする場合、参照するファイルがあるフォルダをパスとして追加する必要があります。- Visual Studioであれば比較的簡単に設定できるのですが、clang++ではどうすればよいかをまとめました。
clang++を使った、C++のコンパイルにおいて、
- "-I"を使う方法
- #include ""を使う方法(コメントで教えて頂きました)
などがありますが、CPLUS_INCLUDE_PATHを使った方法もあるので、これを紹介していきます。
使用するファイル
フォルダ構成
ファイルの中身
#include<iostream> void header2(){ std::cout<<"lib2/header2.h"<<std::endl; }
#include<iostream> void header2(){ std::cout<<"lib2/header2.h"<<std::endl; }
#include <iostream> #include <header1.h> #include <header2.h> int main(){ header1(); header2(); }
CPLUS_INCLUDE_PATHへの追加手順
ここに追加したパスはclang++がコンパイルする際に、参照してくれるそうです(参考:c++ - How to add include paths to clang globally - Stack Overflow)。
#パスの追加 $ export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/Desktop/clang_test/lib1 $ export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/Desktop/clang_test/lib2 #コンパイルと実行 $ clang++ main.cpp $ ./a.out lib1/header1.h lib2/header2.h
CPLUS_INCLUDE_PATHに毎回追加するのが面倒なら、シェルスクリプトにまとめて実行するようにしましょう。
clang_test_dir=~/Desktop/clang_test #追加 export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:$clang_test_dir/lib1:$clang_test_dir/lib2" #表示 echo $CPLUS_INCLUDE_PATH