clang++ CPLUS_INCLUDE_PATHを使ったインクルードパスの追加



概要

  • 自作ヘッダーなどをインクルードする場合、参照するファイルがあるフォルダをパスとして追加する必要があります。
  • 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