C_INCLUDE_PATH の変更点 - アールメカブ

アールメカブ


C_INCLUDE_PATH の変更点


[[Programming]]

以下,すべて[[ここ:http://ftp.componentsource.com/Componen/262/HTM/34074/lin1029.htm#GNU_Env_Vars]]と[[ここ:http://202.213.1.215/xml-rss2.php]]から引用する.

環境変数

コンパイラがライブラリやインクルード・ファイルなど特殊なファイルを検索する際のパス(検索先)を指定して、環境をカスタマイズできます。

LD_LIBRARY_PATH -- 共用オブジェクトの場所を指定します。

PATH -- システムがバイナリ実行ファイルを検索するディレクトリを指定します。

ICCCFG -- icc を使用してコンパイラを起動したときにコンパイルをカスタマイズするための設定ファイルを指定します。

ICPCCFG -- icpc を使用してコンパイラを起動したときにコンパイルをカスタマイズするための設定ファイルを指定します。

いくつかの環境変数が一時ファイルの場所を指定するためにサポートされています。コンパイラは、TMP、TMPDIR、TEMP の順に変数を検索します。これらの変数が見つからない場合、一時ファイルは /tmp に格納されます。

IA32ROOT (IA32 ベース・システム) - bin、lib、include および代用ヘッダのディレクトリを含むディレクトリを指します。

IA64ROOT (Itanium ベース・システム) - bin、lib、include および代用ヘッダのディレクトリを含むディレクトリを指します。

* GNU* 環境変数 [#jfca4498]

インテル C++ コンパイラは、次の GNU 環境変数をサポートします:

CPATH - C/C++ コンパイル用のインクルード・ディレクトリのパスを指定します。

C_INCLUDE_PATH -- C コンパイル用のインクルード・ディレクトリのパスを指定します。

CPLUS_INCLUDE_PATH -- C++ コンパイル用のインクルード・ディレクトリのパスを指定します。

LIBRARY_PATH -- LIBRARY_PATH の値は、PATH のようにコロンで区切られたディレクトリのリストです。

DEPENDENCIES_OUTPUT -- この変数が設定された場合、その値はコンパイラで処理されるシステム以外のヘッダファイルに基づいて Make の依存性を出力する方法を指定します。システム・ヘッダ・ファイルは依存性出力で無視されます。

SUNPRO_DEPENDENCIES -- この変数は、システム・ヘッダ・ファイルが無視されないこと以外は、DEPENDENCIES_OUTPUT と同じです。

* コンパイル環境オプション [#dc91e452]

インテル C++ コンパイラには、環境変数の設定に使用することができるシェル・スクリプトが含まれています。詳細については、「コマンドラインからのコンパイラの起動」を参照してください。

* Eclipse にからんで [#ra6f7f09]

[1]設定内容



Eclipseで設定しないといけないことは、以下の項目です。

 ・インクルードパスの設定

 ・ライブラリの設定

 ・Debug/Releaseモードの設定


2.1 インクルードパスの設定

C/C++でhファイルを#include によってインクルードする際の、インクルードのカレント・ディレクトリを設定しましょう。この設定を行うことで、以降、すべての開発において再設定を行う必要がなくなります。

今回は、Linuxに用意されている環境変数にインクルードパスを追加します。

まず、ターミナルを起動し、

  $cd $HOME

を実行します。その後、

  $ls -a | grep .bash

を実行しましょう。結果に.bash_profile、.bashrcがありますか?

これらのファイルは、前者がログイン時、後者がアプリケーションの起動時に実行されるスクリプトです。これらのファイルにインクルードパスに関する環境変数を設定し、スクリプトを実行させることで、インクルードパスを追加します。

今回は、.bash_profileに記述しましょう。

  $vi .bash_profile

を実行して、.bash_profileを修正しましょう。

適当な行に(最後の行が良いでしょうか)、

  C_INCLUDE_PATH="インクルードパスとして追加したい絶対パス“:$C_INCLUDE_PATH

  export C_INCLUDE_PATH

を追加してください。

”インクルードパスとして追加したい絶対パス“が、複数ある場合は、”:"で区切ります。

パスが分からない場合はpkg-configなどを利用して調べるのが良いでしょう。

例としてGTK+-2.0のパスを調べる方法を紹介します。

  $pkg-config gtk+-2.0 --cflags

のようにすると、

  -I/usr/include/gtk-2.0 -I/usr/local/include... ...

のように返ってくるはずです。各文字列の-Iを取り除いた残りの部分がインクルードパスに当たります。

もしもpkg-configでエラーが返ってきたら、/usr/lib/pkgconfig/内で.pcファイルを調べてみてください。pkg-configはこのファイルを開いて各文字列を表示します。pkg-config gtk+-2.0 --cflagsを指定した場合、gtk+-2.0.pcを参照しようとします。これが無い場合は、自力で必要なパスを捜し出すしかありません。

以上で、Cを利用する場合のインクルードパスの設定は終了しました。再ログイン後有効になっているはずです。

C++で設定する場合は、C_INCLUDE_PATHをCPLUS_INCLUDE_PATHにしたものを新たに追加してください。



2.2 ライブラリの設定

ライブラリの設定ですが、Eclipseでは完全な全自動化は無理なようです。むしろ、Eclipseだけに留まらず、他のどんなアプリケーションでも無理な気がしますが...。

ただし、プロジェクトごとに自動化することなら出来ます。これはMakefileを各手間を省くだけのことですが、ここではその方法を紹介します。



※C/C++プロジェクトは、「Managed Make C/C++ Project」で生成してください。



Eclipseを起動します。プロジェクトを新規作成するか、または、すでに在るプロジェクトを開いてください。Project View に表示されているプロジェクトを選択して、メニューバー上の「Project」あるいは日本語化をしているなら「プロジェクト」を選択し、「Proparties」あるいは「プロパティ」を選択してください。出てきたダイアログの中から「C/C++Build」を選択します。「C/C++ Linker」を選ぶか、「C/C++ Libraries」を選んでください。「C/C++ Linker」を選んだ場合は、command:欄に`pkg-config ...`という風にして通常gccでビルドするときのようにライブラリを指定します。「C/C++ Libraries」を選んだ場合は、「+」アイコンからライブラリを追加していきます。この時のライブラリの指定は-lオプションを除いた雷ぶらり名だけにしてください。その後、Applyボタンを押して適用させます。

以上で、ライブラリの設定はおしまいです。
他にMakeで使われる環境変数については
https://wiki.ubuntulinux.jp/UbuntuPackagingGuideJa/ch04s02



この手法では、プロジェクトを新規に生成するたびに設定し直さなければなりませんが、いちいちMakefileを作る必要がないので、まだ楽チンです