e2 studioでC++ソースでのINDEXER/CODANの調子が悪そうなので調べてみようと思います

こんにちは、NoMaYです。

昨日、別スレッドをきっかけに、最近のe2 studioでは(実は結構昔から?)プロジェクトウィザードでGNURXやCC-RXのC++プロジェクトを作成する場合にもRXスマートコンフィグレータを選択可能になっていることを知りました。同時に、C++ソースに対してはCソースよりもe2 studioのINDEXER/CODANの調子が悪そうなことも知りました。そこで、ちょっと調べてみようと思いました。出来れば改善策の落としどころも模索してみたいです。(でも、本来は、ルネサスさんに直して貰うべきものかな、とは思いますが。)

まずは、バグ一覧やFAQに何か記載されているか調べてみましたが、特にはありませんでした。

e² studio 2021-04 バグ一覧 (includeの文字列を検索)
www2.renesas.eu/_custom/software/ree_eclipse/e2studio8/docs/releasenotes/2021_04/openissues.htm

Google検索: "e2 studio" "C++" include site:ja-support.renesas.com/knowledgeBase
www.google.com/search?q=%22e2+studio%22+%22C%2B%2B%22+include+site%3Aja-support.renesas.com%2FknowledgeBase
www.google.com/search?q=%22e2+studio%22+%22C%2B%2B%22+include+site%3Aen-support.renesas.com%2FknowledgeBase

[関連スレッド]
e2 studioでビルドエラーが無いのに編集エラーが表示された時に試すと良いかも(workarounds for INDEXER/CODAN troubles)
japan.renesasrulz.com/cafe_rene/f/forum21/4564/e2-studio-workarounds-for-indexer-codan-troubles

続く。

以下、e2 studioでC++ソースでINDEXER/CODANが誤動作している例の画面コピーです。

現状はC++標準ヘッダファイルのインクルードパスがe2 studioに自動認識されていない


本来は以下のようにC++標準ヘッダファイルのインクルードパスがe2 studioに自動認識されているべき

 

  • こんにちは、NoMaYです。

    回避策ですが、以下のようにすると調子が良さそうです。なお、私の場合、スマートコンフィグレータを使わない、という選択肢は、まず無い、ですので、C++ソースとスマートコンフィグレータが生成したCソース(smc_genフォルダ)との混在を前提にしています。

    回避策:

    ● プロジェクト全体の設定

    Compiler CPPのcommandを以下のように変更する(コンパイラ規格は必要に応じて変更可能)

    rx-elf-gcc ⇒ rx-elf-g++ -std=gnu++17

    ● smc_genフォルダの設定

    Compiler CPPのcommandを以下のように変更する(コンパイラ規格はGNU99に決め打ち)

    rx-elf-gcc ⇒ rx-elf-gcc -std=gnu99

    以下、e2 studioの画面コピーです。

    回避策



    GNURXから取得した情報







    [追記]

    ビルド時

     

  • こんにちは。NoMaYです。

    以下の画面コピーのソースでC99とC++17としてe2 studioのINDEXER/CODANに認識されていることは確認してみました。




     

  • こんにちは。NoMaYです。

    唐突に、頭に思い浮かんだのですが、以前に投稿した以下のCS+ + CC-RX + Cプロジェクトのサンプルプログラムをe2 studio + GNURX + C++プロジェクトにしたサンプルプログラムを作って投稿してみるのも面白いかも知れない?と思いました。(実装の下層にはRXスマートコンフィグレータのConfigコンポーネントを使用(FITモジュールではなくConfigコンポーネントである理由は、まったくの私の好みによるもの、であって、FITに問題があったから、とかでは全然ありません)、また、C++プロジェクトといってもサンプルプログラム的には拡張子がcppになる程度ですけれど。)

    TB-RX65N/RX130/RX231+CSplus sample program

    サンプルプログラム置き場
    japan.renesasrulz.com/cafe_rene/m/sample_program/460

    かふぇルネのスレッド
    japan.renesasrulz.com/cafe_rene/f/002-2095199602/6870/tb-rx65n-rx130-rx231-csplus-sample-program
     

  • こんにちは。NoMaYです。

    ものは試しで、CS+ + CC-RX + Cプロジェクトのサンプルプログラムをe2 studio + GNURX + C++プロジェクトにしたサンプルプログラムを作ってみようとしたら、以下の画面コピーのプログラムで、e2 studioのINDEXER/CODANがcoutとendlを認識してくれないことに気付きました。まだまだ何かあるようですね、、、う~ん、、、

    以下、e2 studioの画面コピーです。


     

  • > e2 studioのINDEXER/CODANがcoutとendlを認識してくれないことに気付きました
    preprpcessor の設定にヘッダパスを追加していても?

  • ほや さん、こんにちは。NoMaYです。

    > preprpcessor の設定にヘッダパスを追加していても?

    以下の画面コピーの通り、iostreamのインクルードは問題無さそう、なのです。ただ、Google検索してみると、何か関係無くもない?ような検索結果が出て来ますので、少し調べてみます。(もっとも、これが単にC++のHello Worldであり、とかく最初に書きがちなコードなだけのことで、iostream固有のことは何も無いかも知れませんけれども。)

    Google検索: eclipse c++ cout symbol could not be resolved
    www.google.com/search?q=eclipse+c%2B%2B+cout+symbol+could+not+be+resolved


     

  • > preprpcessor の設定にヘッダパスを追加していても?

    しばらく前にコメントした、これ↓↓をやったプロジェクトではcoutやendlがエラーにならないので聞いてみました。
    > プロジェクトプロパティの「C/C++一般」→ Preprocessor Include ... の
    > 「エントリー」タブ「GNUC++」で、「CDTユーザー設定項目」に
    > ${TCINSTALL}/rx-elf/include/c++/${GCC_VERSION}
    > ${TCINSTALL}/rx-elf/include/c++/${GCC_VERSION}/backward
    > ${TCINSTALL}/rx-elf/include/c++/${GCC_VERSION}/rx-elf
    > を追加してやっても解決できます。

  • ほや さん、こんにちは。NoMaYです。

    以下の画面コピーの通り、設定を追加しましたが解消しませんね。まあ、ゆっくり調べます、、、


     

  • こんにちは。NoMaYです。

    RX671は今のところまだFreeRTOSプロジェクトを作れない状態ですね。C++、FreeRTOS、Renesas RX Simulatorの力技3連続投入でサンプルプログラムを作っておくのも面白いかも、、、

    以下、e2 studioの画面コピーです。