6

Linux で Eclipse CDT Mars.2 (および Neon RC) を使用しています。私のディストリビューションのデフォルトの C++ コンパイラは GCC 5.3.1 ですが、一部の作業では GCC 4.9.3 を使用しています。プロジェクトに関するすべてで GCC 4.9.3 を使用したいと考えています。ツールの検出、C++ 標準ライブラリ、インクルード ファイル パス、インデクサー、前処理など、すべてです。

これを行う正しい方法は何ですか?Eclipse にはかなりビザンチンな「プロバイダー」と「ツールチェーン」構成があるようで、後で元に戻せない設定をしたくありません...

注:プリプロセッサ インクルードなどのプロバイダー設定の一部 を置き換えようとしました${COMMAND}/usr/bin/g++-4.9、これにより 4.9.3 関連のインクルード ファイルが検出されましたが、インデクサーはそれを気に入らず、すべての std::stuff を赤く表示され、未解決。次に、インデックス作成に使用するコンパイラのバージョンをどこに設定したかを探してみましたが、見つかりませんでした。

4

1 に答える 1

4

「標準メイク」と「マンガ化メイク」のどちらを行っているかによって、2 つの答えが考えられます。標準 Make とは、独自の Makefile を作成し、そのすべてを自分で管理していることを意味します。Managed Make とは、CDT に Makefile の作成と管理を任せることを意味します。

スタンダードメイク

標準的なメイクの場合、スキャナーが検出するものによってすべてが制御されます。スキャナーは、プロジェクトの一部であるすべてのシステム インクルード ファイルの検索を処理します。それらはインデクサーに送られ、シンボルを解決し、ヘッダー ファイルのナビゲーションなども可能にします。

使用するコンパイラを変更するには${COMMAND}、選択したコンパイラに置き換える必要があります。このコマンドが Makefile で使用しているものと一致することを確認するのは (ユーザーとしての) あなた次第です。

を変更するには${COMMAND}:

  1. プロジェクトのプロパティを開きます(プロジェクトを右クリックして)
  2. ツリーでC/C++ General -> Preprocessor Include Paths, Macros, etcを選択します。
  3. [プロバイダ] タブを選択
  4. リストからCDT GCC 組み込みコンパイラ設定を選択します。
  5. ${COMMAND}in Command to get compiler specs:を目的の g++ 実行可能ファイルに置き換えます。

ここに役立つスクリーンショットがあります:

コマンド編集

これを実際に確認するために、説明されている変更がある場合とない場合のスクリーンショットをいくつか示します。私のマシンに/usr/bin/g++は、バージョン 5.3 と/usr/bin/g++-4.7バージョン 4.7 があります。

デフォルトの g++ で

g++5

g++ をバージョン 4 にオーバーライド

g++4

環境管理を使用する

上記の問題は、Makefile とビルド設定の間でg++を調整する必要があることです。これに対する 1 つの解決策は、C/C++ ビルド環境CXX設定を使用して、使用するコンパイラとして定義することです。プロジェクト設定 ([プロジェクト プロパティ] -> [ C/C++ ビルド] -> [環境] ) またはグローバル設定 ( [設定] -> [ C/C++ ] - > [ビルド] - > [環境CXX])で環境変数を設定します。

${COMMAND}次に、に置き換え${CXX}ます。

これは、私が説明したことを示すスクリーンショットです。

環境

マネージドメイク

代わりに Managed Make を使用している場合は、個々のツールのビルド設定をオーバーライドする必要があります。これらの設定は、標準 Make によって直接使用されるように、プリプロセッサのインクルード パス、マクロなどの設定にフィードされます。

ビルド設定を変更するには、ツールの種類ごとに 1 回、いくつかの場所でコンパイラに使用されるコマンドをオーバーライドする必要があります。[プロジェクト プロパティ] -> [ C/C++ ビルド] -> [設定]で開始し、次のそれぞれを編集します。

  • GCC C++ コンパイラ-> 通常はg++
  • GCC C コンパイラ-> 通常はgcc
  • GCC C++ リンカ-> 通常は に設定g++

デモ用のスクリーンショットを次に示します。

管理されたメイクスクリーンショット

于 2016-07-06T09:26:16.410 に答える