ルネサスさんのRenesas Extensions for Visual Studio Codeを使ってみるスレッド

こんにちは。NoMaYです。

ルネサスさんからRenesas Extensions for Visual Studio Code(テクニカルプレビューバージョン)が出ていましたので触ってみることにしました。

Renesas Extensions for Visual Studio Code(テクニカルプレビューバージョン) 製品ページ
www.renesas.com/jp/ja/software-tool/renesas_extension_of_vscode

Renesas VS Code Extension Help
tool-support.renesas.com/e2studio/vscode/docs/debug/index.html

[関連スレッド]

最近Atom IDEとかVisual Studio Codeとか新しい開発環境が出て来てますね(Renesas CSplusと連携させる方法を探したいですね)
community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/4553/atom-ide-visual-studio-code-renesas-csplus

Visual Studio 2022 Community EditionでRX MCUやRL78 MCUのSoftware Developmentが出来るか試してみようと思います
community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/7703/visual-studio-2022-community-edition-rx-mcu-rl78-mcu-software-development

e2 studioでCMakeでビルドする、というアプリケーションノートがあるのですがスマートコンフィグレータは使えるのでしょうか?
community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/7713/e2-studio-cmake
 

  • cross.cmakeかCMakeLists.txtの中で
    SET(CMAKE_FIND_ROOT_PATH に ccrx.exeのパスを書いて教えてやる必要があります。

    メッセージの後ろの方にあるように、
    set(ENV{PATH} "<CC-RXのフォルダ>/bin;$ENV{PATH}")
    とかでPATHを通しちゃうやり方でも対応可。

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

    リプライありがとうございます。(すみません、冒頭の関連スレッドにて、その辺りは分かってはいるのですけれどもね。)

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

    リプライありがとうございます。(すみません、冒頭の関連スレッドにて、その辺りは分かってはいるのですけれどもね。)

  • そこで、ほやさんのリプライにもありましたけれども、CMAKE_FIND_ROOT_PATH を設定します。ただ、そのエラーは出なくなりますけれども、いざビルドしようとしてみると今度はCC-RXのリンカでエラーになります。([追記]これって、libgenで出ているのではないかなぁ、と思います。実際、buildフォルダにはlibファイルが生成されていません。)

    cross.cmake

    # Set the environment root directory
    # It can be used to specify the target environment location
    # e.g compiler's location. This variable is most useful when crosscompiling.
    #(Should avoid spaces in the path or have to escape them)

    SET(CMAKE_FIND_ROOT_PATH C:/Renesas/CS+/CC/CC-RX/V3.05.00/bin)

    if (NOT CMAKE_FIND_ROOT_PATH)
    message("Toolchain path not defined. Please use CMAKE_FIND_ROOT_PATH variable to set the toolchain's bin folder")
    endif()

    以下省略

     
    以下、VSCodeのエラーの画面コピーです。


     

  • > F0563400:Cannot execute "prelnk"
    この件も既に分かっていることかもしれませんが、前回のレスであえてPATHを通すやり方にも触れたのは
    binフォルダの他のコマンドが呼べないために起きるこの現象の対策にもなるからでした。

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

    リプライありがとうございます。残念ながら、そのやり方(以下の記述を追加する)では、この問題は解決しないのですよ。

    cross.cmake

    # Set the environment root directory
    # It can be used to specify the target environment location
    # e.g compiler's location. This variable is most useful when crosscompiling.
    #(Should avoid spaces in the path or have to escape them)

    SET(CMAKE_FIND_ROOT_PATH C:/Renesas/CS+/CC/CC-RX/V3.05.00/bin)
    set(ENV{PATH} "C:\\Renesas\\CS+\\CC\\CC-RX\\V3.05.00\\bin;$ENV{PATH}") ← 解決しないです
    message("Debug: Path=$ENV{PATH}") # for debug

    if (NOT CMAKE_FIND_ROOT_PATH)
    message("Toolchain path not defined. Please use CMAKE_FIND_ROOT_PATH variable to set the toolchain's bin folder")
    endif()

    以下省略

     
    以下、VSCodeのエラーの画面コピーです。



     

  • set(ENV{PATH} ...
    set(ENV{BIN_RX} ...
    set(ENV{INC_RX} ...
    で環境変数一式を全部設定してしまっていたからか気付きませんでした。

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

    リプライありがとうございます。残念ながら、そういうことでもないです。まず、CMake側の話をすると、CMakeを運用する際には、大別して以下の2つのフェーズがありますよね。

    (1) config
    (2) build

    さらに、buildフェーズを実行する時、以下の2つのやり方があります。

    (2-1) ビルドツール(ninjaやmake)を単体で実行する
    (2-2) ビルドツール(ninjaやmake)をCMakeの中から起動する(その意図は再度configが必要なのか自動判定させて必要なら自動的に再度configさせる)
    (2-2') (逆に、再度configする必要か無いと自動判定された場合には再度configすることはしません)

    その結果、以下のような状況が発生するのです。

    (2-1)の場合:

    (2-1-A) configフェーズで環境変数を設定しても、それはconfigフェーズでのみ有効である
    (2-1-A') なぜならば、CMakeとninja/makeは別々に起動されているのだから

    (2-2)の場合:

    (2-2-A) configフェーズが実行されていないのであれば、その環境変数設定も行われません
    (2-2-B) ここは推測ですが、configフェーズが実行されても、その環境変数設定はbuildフェーズには引き継がれない(あえて引き継がない?)

    なので、ツールチェインファイルやCMakeLists.txtで環境変数をあれこれ設定しても本案件では駄目なのです。

    そして、CC-RX側の話は、以下となります。

    F0563400:Cannot execute "prelnk"

     
    これは、CC-RXのbinフォルダにあるrlink.exeからprelnk.exeを起動出来ない場合に表示されるものですが、この場合、環境変数のBIN_RXとINC_RXはそもそも関係ないです。これらの環境変数はコンパイラ/アセンブラで参照されるもので、rlink.exeが参照するものでは無いですよね。そして、以下のこともあります。

    (3) rlink.exe自体には、rlink.exeからprelnk.exeを起動しないようにする-noprelinkというオプションはあります
    (3') ですが、libgen(lbgrx.exe)から起動されるrlink.exeに対して-noprelinkというオプションを付ける手段はありません
    (4) そのようなオプションはあっても、C++ソースをコンパイル/リンクする場合には、付けてはいけないケースがあります
    (4') 今回はlibgenのライブラリ生成時の案件でしたが、そのようなケースではリンク時にも同様のことが発生します

    最後に解決策ですが、Windowsのコントロールパネルで、環境変数PathにCC-RXのbinフォルダのパスを追加する、という回避策になります。(手前味噌ですけれども、冒頭の関連スレッドのひとつのCMakeへの取り組みでは、そういう回避策は不要になるようにしてあります。ルネサスさんのCMake対応手法で今後遭遇するであろう諸々の問題も対処しています。)

  • 何となく分かりました。
    CC-RXのコマンドが自分のいるパスを認識して動いてくれれば済む話ではあります。

  • libgenの件を踏まえて、環境変数のPathの設定にCC-RXのbinフォルダのパスを追加したところ、ひとまずビルドは出来るようになりました。

    以下、Windowsのコントロールパネルの環境変数の設定画面とVSCodeでビルドが出来た時の画面コピーです。