e2 studioでCMakeでビルドする、というアプリケーションノートがあるのですがスマートコンフィグレータは使えるのでしょうか?

こんにちは。NoMaYです。

Visual Studio 2022を触っていて、これからVisual Studio上でCC-RX/CC-RL/CC-RHを使うならCMakeを使うのが良いのかな?と思い始めたところ、ルネサスさんから以下のアプリケーションノートが発行されていたことを思い出したので目を通してみたのですが、どうもこれではスマートコンフィグレータどころかコンパイルオプションの設定すらe2 studio上では出来ないのでは?という気がしてきました。実際、どうなのでしょう?御存知の方はいらっしゃいますでしょうか?

アプリケーションノート 統合開発環境 e² studio CMakeプロジェクトを作成してビルドする
R20AN0613JJ0200 Rev.2.00 Pages 10 Jun.30.21
www.renesas.com/jp/ja/document/apn/e-studio-creating-and-executing-build-cmake-project
 
[追記] 2021/12/31 11:00

ひとつ調査漏れに気付きました。こういうアプリケーションノートも出ていたのですね。

アプリケーションノート 統合開発環境 e² studio CMakeを使用してCC-RX用ソース・ファイルをビルドする
R20AN0569JJ0201 Rev.2.01 Pages 12 Sep.15.21

PDF
www.renesas.com/jp/ja/document/apn/integrated-development-environment-e-studio-using-cmake-renesas-cc-rx-compiler-rev201

ZIP
www.renesas.com/jp/ja/document/scd/integrated-development-environment-e-studio-using-cmake-renesas-cc-rx-compiler-rev201-sample-code
 

Parents
  • こんにちは。NoMaYです。

    1つ前の投稿の件は、CMake側を直すべきですけれども、ラッパースクリプトの方にちょっと小細工を入れて(といっても既に幾つも小細工が入っているので微々たるものですけれども)、以下のような記述で当面しのごうと思います。なお、幾つかコンパイラのワーニングが表示されてしまいますけれども、これぐらいならば許容範囲内のものかなと思います。

    必要になりそうな状況:

    ● コンパイラがエラー/ワーニングを出すけれども(難解な)マクロ展開内でちょっと原因が分からなくてプリプロセス処理後ソースを確認したい
    ● コンパイラが(なぜか)アセンブリ言語レベルのエラー/ワーニングを出しているのでちょっと試しにアセンブリソースを生成させて確認したい

    CC-RXの場合の例: (CC-RXでは特殊なことは無いです)

    # The following setting selects the output type of compilation of the source.
    if(NOT DEFINED EXAMPLE_ALT_OUTPUT_TYPE)
      set(EXAMPLE_ALT_OUTPUT_TYPE 1) # 0: Usual object or 2: Preprocessed source or 3: Assembly source.
    endif()
    if(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 1)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      -output=prep=test_dep_scan_etc_c.p
      )
    elseif(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 2)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      -output=src=test_dep_scan_etc_c.s
      )
    endif()

     
    CC-RLの場合の例: (Unix Makefiles Generator等では '-P' とか '-S' とか記述することで逃げるようにしました)

    # The following setting selects the output type of compilation of the source.
    if(NOT DEFINED EXAMPLE_ALT_OUTPUT_TYPE)
      set(EXAMPLE_ALT_OUTPUT_TYPE 1) # 0: Usual object or 2: Preprocessed source or 3: Assembly source.
    endif()
    if(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 1)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      $<IF:$<STREQUAL:${CMAKE_GENERATOR},Ninja>,-P,'-P'> -o test_dep_scan_etc_c.p
      )
    elseif(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 2)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      $<IF:$<STREQUAL:${CMAKE_GENERATOR},Ninja>,-S,'-S'> -o test_dep_scan_etc_c.s
      )
    endif()

     
    CC-RHの場合の例: (Unix Makefiles Generator等では '-P' とか '-S' とか記述することで逃げるようにしました)

    # The following setting selects the output type of compilation of the source.
    if(NOT DEFINED EXAMPLE_ALT_OUTPUT_TYPE)
      set(EXAMPLE_ALT_OUTPUT_TYPE 1) # 0: Usual object or 2: Preprocessed source or 3: Assembly source.
    endif()
    if(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 1)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      $<IF:$<STREQUAL:${CMAKE_GENERATOR},Ninja>,-P,'-P'> -otest_dep_scan_etc_c.p
      )
    elseif(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 2)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      $<IF:$<STREQUAL:${CMAKE_GENERATOR},Ninja>,-S,'-S'> -otest_dep_scan_etc_c.s
      )
    endif()

     
    表示されるコンパイラのワーニングというのは以下のようなものです。

    CC-RXの場合の例:

    [build] W0511123:The "-output=obj" option is ignored when the "-output=prep" option is specified at the same time.
    [build] W0511147:The "-output" option is specified more than once. The latter is valid.

     

    [build] W0511123:The "-output=obj" option is ignored when the "-output=src" option is specified at the same time.
    [build] W0511147:The "-output" option is specified more than once. The latter is valid.

     
    CC-RLの場合の例:

    [build] W0511123:"-P"オプションが指定されたので"-c"オプションは無視しました。
    [build] W0511147:"-o"オプションが複数指定されています。後の指定が有効になります。

     

    [build] W0511123:"-S"オプションが指定されたので"-c"オプションは無視しました。
    [build] W0511147:"-o"オプションが複数指定されています。後の指定が有効になります。

     
    CC-RHの場合の例:

    [build] W0511123:"-P"オプションが指定されたので"-g"オプションは無視しました。
    [build] W0511123:"-P"オプションが指定されたので"-g_line"オプションは無視しました。
    [build] W0511123:"-P"オプションが指定されたので"-Xpass_source"オプションは無視しました。
    [build] W0511123:"-P"オプションが指定されたので"-Xcref"オプションは無視しました。
    [build] W0511123:"-P"オプションが指定されたので"-c"オプションは無視しました。
    [build] W0511147:"-o"オプションが複数指定されています。後の指定が有効になります。

     

    [build] W0511123:"-S"オプションが指定されたので"-c"オプションは無視しました。
    [build] W0511147:"-o"オプションが複数指定されています。後の指定が有効になります。

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

    CC-RXの場合の例:


    CC-RLの場合の例:


    CC-RHの場合の例:

     

Reply
  • こんにちは。NoMaYです。

    1つ前の投稿の件は、CMake側を直すべきですけれども、ラッパースクリプトの方にちょっと小細工を入れて(といっても既に幾つも小細工が入っているので微々たるものですけれども)、以下のような記述で当面しのごうと思います。なお、幾つかコンパイラのワーニングが表示されてしまいますけれども、これぐらいならば許容範囲内のものかなと思います。

    必要になりそうな状況:

    ● コンパイラがエラー/ワーニングを出すけれども(難解な)マクロ展開内でちょっと原因が分からなくてプリプロセス処理後ソースを確認したい
    ● コンパイラが(なぜか)アセンブリ言語レベルのエラー/ワーニングを出しているのでちょっと試しにアセンブリソースを生成させて確認したい

    CC-RXの場合の例: (CC-RXでは特殊なことは無いです)

    # The following setting selects the output type of compilation of the source.
    if(NOT DEFINED EXAMPLE_ALT_OUTPUT_TYPE)
      set(EXAMPLE_ALT_OUTPUT_TYPE 1) # 0: Usual object or 2: Preprocessed source or 3: Assembly source.
    endif()
    if(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 1)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      -output=prep=test_dep_scan_etc_c.p
      )
    elseif(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 2)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      -output=src=test_dep_scan_etc_c.s
      )
    endif()

     
    CC-RLの場合の例: (Unix Makefiles Generator等では '-P' とか '-S' とか記述することで逃げるようにしました)

    # The following setting selects the output type of compilation of the source.
    if(NOT DEFINED EXAMPLE_ALT_OUTPUT_TYPE)
      set(EXAMPLE_ALT_OUTPUT_TYPE 1) # 0: Usual object or 2: Preprocessed source or 3: Assembly source.
    endif()
    if(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 1)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      $<IF:$<STREQUAL:${CMAKE_GENERATOR},Ninja>,-P,'-P'> -o test_dep_scan_etc_c.p
      )
    elseif(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 2)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      $<IF:$<STREQUAL:${CMAKE_GENERATOR},Ninja>,-S,'-S'> -o test_dep_scan_etc_c.s
      )
    endif()

     
    CC-RHの場合の例: (Unix Makefiles Generator等では '-P' とか '-S' とか記述することで逃げるようにしました)

    # The following setting selects the output type of compilation of the source.
    if(NOT DEFINED EXAMPLE_ALT_OUTPUT_TYPE)
      set(EXAMPLE_ALT_OUTPUT_TYPE 1) # 0: Usual object or 2: Preprocessed source or 3: Assembly source.
    endif()
    if(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 1)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      $<IF:$<STREQUAL:${CMAKE_GENERATOR},Ninja>,-P,'-P'> -otest_dep_scan_etc_c.p
      )
    elseif(EXAMPLE_ALT_OUTPUT_TYPE EQUAL 2)
      set_property(SOURCE ${GSG_BASE_DIR}/src/test_dep_scan_etc_c.c
      APPEND PROPERTY COMPILE_OPTIONS
      $<IF:$<STREQUAL:${CMAKE_GENERATOR},Ninja>,-S,'-S'> -otest_dep_scan_etc_c.s
      )
    endif()

     
    表示されるコンパイラのワーニングというのは以下のようなものです。

    CC-RXの場合の例:

    [build] W0511123:The "-output=obj" option is ignored when the "-output=prep" option is specified at the same time.
    [build] W0511147:The "-output" option is specified more than once. The latter is valid.

     

    [build] W0511123:The "-output=obj" option is ignored when the "-output=src" option is specified at the same time.
    [build] W0511147:The "-output" option is specified more than once. The latter is valid.

     
    CC-RLの場合の例:

    [build] W0511123:"-P"オプションが指定されたので"-c"オプションは無視しました。
    [build] W0511147:"-o"オプションが複数指定されています。後の指定が有効になります。

     

    [build] W0511123:"-S"オプションが指定されたので"-c"オプションは無視しました。
    [build] W0511147:"-o"オプションが複数指定されています。後の指定が有効になります。

     
    CC-RHの場合の例:

    [build] W0511123:"-P"オプションが指定されたので"-g"オプションは無視しました。
    [build] W0511123:"-P"オプションが指定されたので"-g_line"オプションは無視しました。
    [build] W0511123:"-P"オプションが指定されたので"-Xpass_source"オプションは無視しました。
    [build] W0511123:"-P"オプションが指定されたので"-Xcref"オプションは無視しました。
    [build] W0511123:"-P"オプションが指定されたので"-c"オプションは無視しました。
    [build] W0511147:"-o"オプションが複数指定されています。後の指定が有効になります。

     

    [build] W0511123:"-S"オプションが指定されたので"-c"オプションは無視しました。
    [build] W0511147:"-o"オプションが複数指定されています。後の指定が有効になります。

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

    CC-RXの場合の例:


    CC-RLの場合の例:


    CC-RHの場合の例:

     

Children
No Data