8

http://sourceforge.net/projects/gnuarmeclipseのGNUARMC /C++開発サポートプラグインと一緒にC/C++開発者向けのEclipseJunoをインストールしています。

私のプロジェクトでは、のようなタイプを使用していますが、uint_32t通常はから来ています。ディレクトリが存在するディレクトリを直接指すことにより、Eclipseにコンパイラの標準ヘッダーを表示させましたが、言及されたタイプは解決されません。これにより、未解決のシンボルについて多くの赤いマークが付けられ、これらのタイプで宣言された関数のコード完了でいくつかの問題が発生します。int16_tuint8_tstdint.hinclude

同じ問題は、GNUCのような標準のマクロ定義にもあります。通常、CDTはGNUCまたはGNUC ++でこれらを参照しますが、ツールチェーンをARMWindowsGCCに設定すると表示されません。変。

それを解決し、Eclipseが生産性にもたらす主なブーストを返すために何ができますか?

4

8 に答える 8

8

私は自分の問題の解決策を見つけたと思います。問題は、の代わりに実行しようとしたCDTGCCビルトインコンパイラ設定プロバイダーでした。フィールド¹にプレフィックスを追加して、適切な名前でコンパイラを呼び出しました。gccarm-elf-gccCommand to get compiler specs:

そして、voilà、すべての未解決のシンボルが消えました。

残念ながら、ツールチェーンを変更してプロジェクトを中断しました(GNU ARM Eclipseプラグインがインストールされている場合は絶対にこれを行わないでください!)が、それは別の話です。


¹-下にあります:Project Properties > C/C++ General > Preprocessor Include Paths, Macros etc.、タブProviders; Share settings entries between projects (global provider)そのフィールドを編集するには無効にする必要があります。

于 2012-07-31T11:06:56.660 に答える
1

GNU ARM Eclipseプラグインは2013年10月に更新され、新しいバージョンではパス検出のサポートが向上しているため、この問題が発生する可能性は低いことに注意してください。

ツールチェーンの変更も修正されました。

于 2014-01-22T12:01:14.030 に答える
1

外部Makefileを使用している場合、Eclipseには、ターゲットプラットフォームの標準ライブラリがどこにあるかを知る方法がありません。私が見つけた解決策は、ライブラリインクルードパスを追加することです

Project->Preferences->C++ General->Paths and symbols

于 2015-02-24T10:09:18.643 に答える
1

私は同じ問題を抱えていました、そしてこのページからの解決策はそれを解決するのを助けました:

  • プロジェクトのプロパティを入力->C/C++->プリプロセッサインクルードパスなど->プロバイダー
  • CDT GCC Build Output Parserをクリックし、コンパイラのコマンドパターンをから(gcc)|([gc]++)|(clang)に変更します。(arm-none-eabi-gcc)|([gc]++)|(clang)
  • 適用ボタンをクリックします
  • CDT組み込みコンパイラ設定CrossARMをクリックし、に置き換え${COMMAND}ますarm-none-eabi-gcc
  • 適用ボタンをクリックします。
于 2015-10-29T09:14:49.023 に答える
1

Project > Properties > C/C++ General > Preprocessor Include Paths > Providers

  • 有効にしCDT GCC Built-in Compiler Settings Cross ARMます。

  • 設定Command to get compiler specs

    arm-none-eabi-g++ ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD "${INPUTS}".C
    
    • 重要な部分は.C最後です。これは通常、言語に応じて設定されます。小さい.cCはCコードに使用され、大きいCはC++に使用されます。ただし、外部makefileを使用する場合、またはno toolchainオプションを設定する場合は、言語が指定されていません。
  • また、Allocate console in the Console Viewコマンドが正しく実行され、変数が正しく置換されていることを確認してください。

  • CDT GCC Build Output Parserコンパイラのコマンドパターンを有効にしてから変更し、変更を(gcc)|([gc]\+\+)|(clang)適用し(.*g++)|(.*gcc)|(.*[gc]\+\+)ます。Move up/downボタンを使用して、上に移動しますCDT GCC Built-in Compiler Settings Cross ARM


Project > Properties > C/C++ General > Preprocessor Include Paths > Entries > CDT User Settings Entriesまた、次のように設定する必要があります。

cdtユーザー設定エントリ

では、ツールチェーンのホームを指すための変数Preferences > String Substitutionsを作成する必要があります。gnu-arm-path

理想的には、これらはにあるはずですCDT GCC Built-in Compiler Settings Cross ARMが、私の場合はそうではありません。管理されたプロジェクトでは、これらのエントリが各言語に関連付けられているという事実と関係があると思います。しかし、外部のmakefileを使用すると、言語リストボックスに「」と表示されます[Unspecified]


EclipseスキャナープロバイダーシステムはCDTで管理されたプロジェクトを中心に設計されているようで、外部のmakefileを使用しているときに作業を開始するのは少し難しいです。

外部makefileを使用して新しい管理対象プロジェクトを作成し、スキャナー検出コンソールを表示して、それがどのように機能するかを確認できます。これが私がしたことです。

于 2016-08-16T21:50:46.023 に答える
0

私は、この(不)有名な問題の私のバージョンに対してまったく異なる解決策に出くわしました。私の場合、コンパイラが正常に動作していたため、問題のないパスを検索します。それにもかかわらず、編集者はどこでも未解決のcstdintタイプについて不平を言いました:非常に迷惑です。エラーメッセージ文字列を使用して解決策を探すことは、実りがなく、非常に苛立たしいことではありませんでした。

この問題の解決策は、次のスレッドへの回答(「GXX_EXPERIMENTALハックなしでこれを解決する新しい方法があります」)で偶然見つけました。

Eclipse CDT C ++ 11 / C++0xのサポート

乾杯

于 2015-05-02T12:37:46.223 に答える
0

私の場合、問題はPATHコンパイラーに直接送信されなかったことです。C:\Program Files (x86)\GNU Tools ARM Embedded\7 2017-q4-major\binだから私は変数に追加し、それは機能しました。明確にするために:変数を使用してコンパイラーに指示するという規則がありましたGCCPATH

于 2019-05-15T05:52:37.067 に答える
-1

[プロジェクト]->[C/C++インデックス]->[すべてのファイルを更新]が役立つかどうかを確認します。

于 2019-07-25T17:13:16.200 に答える