web-dev-qa-db-ja.com

Eclipse CDTのLinux GCCツールチェーンでC ++標準ライブラリヘッダーを解決する方法

Ubuntu 12.04 LTSでは、Eclipse CDTプラグインをインストールし、新しいhello worldプロジェクトを開いてすべてをテストしました。プロジェクトを作成していたとき、唯一のツールチェーンを選択しました:「Linux GCC」

ただし、プロジェクトが作成されると、

#include<iostream>
#include<cstdlb>

未解決です。したがって、coutおよびendlを含む行は使用できず、stdが見つかりません。

using namespace std;も問題を引き起こしています。

std名前空間を使用したコードをサポートするために、認識される標準ライブラリヘッダーの#includeディレクティブを取得するにはどうすればよいですか?

12
Muhammad Khan

私と同じ問題が発生した場合、プロジェクトはビルドされますが、コード補完/コードの強調表示は失敗しますか?役に立つかもしれないメモを見つけました。私がやったことは次のとおりです。

  • プロジェクト->プロパティ

  • C/C++全般

  • パスとシンボル

  • 適切な言語を選択してください

  • [追加]をクリックして、コンパイラバージョン固有のディレクトリを追加します

言語「GNU C++」の場合:

  /usr/include
  /usr/include/c++/4.6
  /usr/include/c++/4.6/bits
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits
  /usr/include/c++/4.6/debug
  /usr/include/c++/4.6/i686-linux-gnu
  /usr/include/c++/4.6/i686-linux-gnu/bits

「GNU C」の場合:

  /usr/include
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits

TBH、上記のすべてのディレクトリが実際に必要であるとは思いません(おそらく「ビット」ディレクトリを削除できます)が、上記のリストは私にとってはうまくいきました。

現在、Eclipse.orgのEclipse Indigo(バージョン3.7.2)を使用しています。正しいインクルードディレクトリが自動的に検出されて追加されます。リストは私にとっては異なります:

/usr/include/c++/4.6
/usr/include/c++/4.6/i686-linux-gnu
/usr/include/c++/4.6/backward
/usr/lib/gcc/i686-linux-gnu/4.6/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed
/usr/include/i386-linux-gnu
/usr/include

明らかに、システムに実際に存在するインクルードディレクトリのみを追加してください;-)

4
jamesodhunt