パハットノート

主にUnity(C#)を中心としたプログラムの備忘録

clang++ インクルードパスの追加




概要

自作ヘッダーなどをインクルードする場合、参照するファイルがあるフォルダをパスとして追加する必要があります。
Visual Studioであれば比較的簡単に設定できるのですが、clang++ではどうすればよいかをまとめました。




使用するファイル

フォルダ構成




ファイルの中身

#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();
}





実行時に指定(-Iを使用)

clang++でコンパイルする際に、
-I インクルードしたいフォルダ名
とすることで、コンパイル時にパスを追加することができます。

#カレントディレクトリを変更する
$ cd ~/Desktop/clang_test

#コンパイル(a.outが生成される)
$ clang++ main.cpp -I ~/Desktop/clang_test/lib1 -I ~/Desktop/clang_test/lib2

#実行
$ ./a.out
lib1/header1.h
lib2/header2.h





環境変数に追加

#パスの追加
$ 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