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です。

    Ninjaも使えそうです。以前に試してうまく行かなかったのは、くだんのアプリケーションノートのCMakeファイルに記述されていたオプションで依存関係ファイルを生成させたのが良く無かったようです。そのオプションで依存関係ファイルを生成させると、makeでは読み込める内容であっても、Ninjaでは読み込めない(以前に試した時はCMakeでも読み込めない)内容になるようです。(実は、たまたま、何か勘違いをして)あっさりしたオプションで試したらうまく行きました、、、

    Ninja
    ninja-build.org/


    くだんのアプリケーションノートのcmakeファイルに記述されていたオプション (右端の方で -MT が2つなのが良く無さそう)

    ########## Add function to scan and generate dependency files
    function(dep_scan out_objects)
      string(REPLACE " -" ";-" DEPENDENCY_C_OPTIONS ${CMAKE_C_FLAGS})
      string(REPLACE " -" ";-" DEPENDENCY_CPP_OPTIONS ${CMAKE_CXX_FLAGS})
      string(REPLACE " -" ";-" DEPENDENCY_ASM_OPTIONS ${CMAKE_ASM_FLAGS})
      set(result)
      foreach(in_f ${ARGN})
        get_filename_component(ext ${in_f} LAST_EXT)
        file(RELATIVE_PATH rel_f ${CMAKE_CURRENT_SOURCE_DIR} ${in_f})
        set(depend_f "CMakeFiles/${PROJECT_NAME}.dir/${rel_f}.d")
        set(obj_f "CMakeFiles/${PROJECT_NAME}.dir/${rel_f}.obj")
        if(${ext} STREQUAL ".c")
          add_custom_command (
            COMMENT "Generate dependency: ${depend_f}"
            OUTPUT ${depend_f}
            COMMAND ${CMAKE_C_COMPILER} ${DEPENDENCY_C_OPTIONS} -MM -MP -output=dep=${depend_f} -MT=${obj_f} -MT=${depend_f} ${in_f}
            DEPENDS "${in_f}"
            VERBATIM
          )
        elseif(${ext} STREQUAL ".cpp")
          add_custom_command (
            COMMENT "Generate dependency: ${depend_f}"
            OUTPUT ${depend_f}
            COMMAND ${CMAKE_CXX_COMPILER} ${DEPENDENCY_CPP_OPTIONS} -MM -MP -output=dep=${depend_f} -MT=${obj_f} -MT=${depend_f} ${in_f}
            DEPENDS "${in_f}"
            VERBATIM
          )
        elseif((${ext} STREQUAL ".asm") OR (${ext} STREQUAL ".s") OR (${ext} STREQUAL ".src"))
          add_custom_command (
            COMMENT "Generate dependency: ${depend_f}"
            OUTPUT ${depend_f}
            COMMAND ${CMAKE_ASM_COMPILER} ${DEPENDENCY_ASM_OPTIONS} -MM -MP -output=${depend_f} -MF=${depend_f} -MT=${obj_f} -MT=${depend_f} ${in_f}
            DEPENDS "${in_f}"
            VERBATIM
          )
        endif()
        list(APPEND result ${depend_f})
      endforeach()
      set(${out_objects} "${result}" PARENT_SCOPE)
    endfunction()
    ########## Call dep_scan
    dep_scan(d_files ${SOURCE} ${src_asm})

     

    調査/試作中のコンパイラ定義ファイルでの例 (右端の方です)

        if("${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX")
          set(CMAKE_INCLUDE_FLAG_${lang} "-include=")
          set(CMAKE_DEFINE_FLAG_${lang} "-define=")
          # Note: <FLAGS> includes CMAKE_${lang}_FLAGS, CMAKE_${lang}_FLAGS_<config> and `lang standard option(s)`
          # FIXME: Should ${RENESAS_${lang}_FLAGS} be used?
          set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> -nologo ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -output=obj=<OBJECT> <SOURCE>"
                                                       "<CMAKE_${lang}_COMPILER> -nologo ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -output=dep=<DEP_FILE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> -nologo ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -output=prep=<PREPROCESSED_SOURCE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> -nologo ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -output=src=<ASSEMBLY_SOURCE> <SOURCE>")
        elseif("${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78")
          set(CMAKE_DEFINE_FLAG_ASM "-D") # This is the same as default setting.
          set(CMAKE_INCLUDE_FLAG_ASM "-I") # This is the same as default setting.
          # Note: <FLAGS> includes CMAKE_${lang}_FLAGS, CMAKE_${lang}_FLAGS_<config> and `lang standard option(s)`
          # FIXME: Should ${RENESAS_${lang}_FLAGS} be used?
          set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -c -o <OBJECT> <SOURCE>"
                                                       "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -o <DEP_FILE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -P -o <PREPROCESSED_SOURCE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -S -o <ASSEMBLY_SOURCE> <SOURCE>")
        elseif("${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850")
          set(CMAKE_DEFINE_FLAG_ASM "-D") # This is the same as default setting.
          set(CMAKE_INCLUDE_FLAG_ASM "-I") # This is the same as default setting.
          # Note: <FLAGS> includes CMAKE_${lang}_FLAGS, CMAKE_${lang}_FLAGS_<config> and `lang standard option(s)`
          # FIXME: Should ${RENESAS_${lang}_FLAGS} be used?
          set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -c -o<OBJECT> <SOURCE>"
                                                       "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -Xno_warning=11123 -o<DEP_FILE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -P -o<PREPROCESSED_SOURCE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -S -o<ASSEMBLY_SOURCE> <SOURCE>")
        endif()

     

    if("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX")
        set(CMAKE_DEFINE_FLAG_ASM "-define=")
        set(CMAKE_INCLUDE_FLAG_ASM "-include=")
        # Note: <FLAGS> includes CMAKE_ASM_FLAGS, CMAKE_ASM_FLAGS_<config>
        # FIXME: Should ${RENESAS_ASM_FLAGS} be used?
        set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -nologo ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -output=<OBJECT> <SOURCE>"
                                     "<CMAKE_ASM_COMPILER> -nologo ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -MF=<DEP_FILE> <SOURCE>")
        set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS src;asm;s)
    elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78")
        set(CMAKE_DEFINE_FLAG_ASM "-define=")
        set(CMAKE_INCLUDE_FLAG_ASM "-include=")
        # Note: <FLAGS> includes CMAKE_ASM_FLAGS, CMAKE_ASM_FLAGS_<config>
        # FIXME: Should ${RENESAS_ASM_FLAGS} be used?
        set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -output=<OBJECT> <SOURCE>"
                                     "<CMAKE_ASM_COMPILER> ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -MF=<DEP_FILE> <SOURCE>")
        set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS asm;s)
    elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850")
        set(CMAKE_DEFINE_FLAG_ASM "-D") # This is the same as default setting.
        set(CMAKE_INCLUDE_FLAG_ASM "-I") # This is the same as default setting.
        # Note: <FLAGS> includes CMAKE_ASM_FLAGS, CMAKE_ASM_FLAGS_<config>
        # FIXME: Should ${RENESAS_ASM_FLAGS} be used?
        set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -o<OBJECT> <SOURCE>"
                                     "<CMAKE_ASM_COMPILER> ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -MF=<DEP_FILE> <SOURCE>")
        set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS asm;s)
    endif()

     

    [関連リンク]

    C/C++ header dependencies - Ninjaマニュアル
    ninja-build.org/manual.html#ref_headers

    Options Controlling the Preprocessor - GCCドキュメント
    gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
     
    [追記]

    なお、CC-RX(やCC-RLやCC-RHも?)では、-M や -MD や -MMD といったオプションは、受け付けないようです。

    [追記2]

    CC-RLとCC-RHのコンパイラの方は -M オプションは受け付けますね。(アセンブラの方は受け付けません。)

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

    Ninjaも使えそうです。以前に試してうまく行かなかったのは、くだんのアプリケーションノートのCMakeファイルに記述されていたオプションで依存関係ファイルを生成させたのが良く無かったようです。そのオプションで依存関係ファイルを生成させると、makeでは読み込める内容であっても、Ninjaでは読み込めない(以前に試した時はCMakeでも読み込めない)内容になるようです。(実は、たまたま、何か勘違いをして)あっさりしたオプションで試したらうまく行きました、、、

    Ninja
    ninja-build.org/


    くだんのアプリケーションノートのcmakeファイルに記述されていたオプション (右端の方で -MT が2つなのが良く無さそう)

    ########## Add function to scan and generate dependency files
    function(dep_scan out_objects)
      string(REPLACE " -" ";-" DEPENDENCY_C_OPTIONS ${CMAKE_C_FLAGS})
      string(REPLACE " -" ";-" DEPENDENCY_CPP_OPTIONS ${CMAKE_CXX_FLAGS})
      string(REPLACE " -" ";-" DEPENDENCY_ASM_OPTIONS ${CMAKE_ASM_FLAGS})
      set(result)
      foreach(in_f ${ARGN})
        get_filename_component(ext ${in_f} LAST_EXT)
        file(RELATIVE_PATH rel_f ${CMAKE_CURRENT_SOURCE_DIR} ${in_f})
        set(depend_f "CMakeFiles/${PROJECT_NAME}.dir/${rel_f}.d")
        set(obj_f "CMakeFiles/${PROJECT_NAME}.dir/${rel_f}.obj")
        if(${ext} STREQUAL ".c")
          add_custom_command (
            COMMENT "Generate dependency: ${depend_f}"
            OUTPUT ${depend_f}
            COMMAND ${CMAKE_C_COMPILER} ${DEPENDENCY_C_OPTIONS} -MM -MP -output=dep=${depend_f} -MT=${obj_f} -MT=${depend_f} ${in_f}
            DEPENDS "${in_f}"
            VERBATIM
          )
        elseif(${ext} STREQUAL ".cpp")
          add_custom_command (
            COMMENT "Generate dependency: ${depend_f}"
            OUTPUT ${depend_f}
            COMMAND ${CMAKE_CXX_COMPILER} ${DEPENDENCY_CPP_OPTIONS} -MM -MP -output=dep=${depend_f} -MT=${obj_f} -MT=${depend_f} ${in_f}
            DEPENDS "${in_f}"
            VERBATIM
          )
        elseif((${ext} STREQUAL ".asm") OR (${ext} STREQUAL ".s") OR (${ext} STREQUAL ".src"))
          add_custom_command (
            COMMENT "Generate dependency: ${depend_f}"
            OUTPUT ${depend_f}
            COMMAND ${CMAKE_ASM_COMPILER} ${DEPENDENCY_ASM_OPTIONS} -MM -MP -output=${depend_f} -MF=${depend_f} -MT=${obj_f} -MT=${depend_f} ${in_f}
            DEPENDS "${in_f}"
            VERBATIM
          )
        endif()
        list(APPEND result ${depend_f})
      endforeach()
      set(${out_objects} "${result}" PARENT_SCOPE)
    endfunction()
    ########## Call dep_scan
    dep_scan(d_files ${SOURCE} ${src_asm})

     

    調査/試作中のコンパイラ定義ファイルでの例 (右端の方です)

        if("${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX")
          set(CMAKE_INCLUDE_FLAG_${lang} "-include=")
          set(CMAKE_DEFINE_FLAG_${lang} "-define=")
          # Note: <FLAGS> includes CMAKE_${lang}_FLAGS, CMAKE_${lang}_FLAGS_<config> and `lang standard option(s)`
          # FIXME: Should ${RENESAS_${lang}_FLAGS} be used?
          set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> -nologo ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -output=obj=<OBJECT> <SOURCE>"
                                                       "<CMAKE_${lang}_COMPILER> -nologo ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -output=dep=<DEP_FILE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> -nologo ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -output=prep=<PREPROCESSED_SOURCE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> -nologo ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -output=src=<ASSEMBLY_SOURCE> <SOURCE>")
        elseif("${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78")
          set(CMAKE_DEFINE_FLAG_ASM "-D") # This is the same as default setting.
          set(CMAKE_INCLUDE_FLAG_ASM "-I") # This is the same as default setting.
          # Note: <FLAGS> includes CMAKE_${lang}_FLAGS, CMAKE_${lang}_FLAGS_<config> and `lang standard option(s)`
          # FIXME: Should ${RENESAS_${lang}_FLAGS} be used?
          set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -c -o <OBJECT> <SOURCE>"
                                                       "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -o <DEP_FILE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -P -o <PREPROCESSED_SOURCE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -S -o <ASSEMBLY_SOURCE> <SOURCE>")
        elseif("${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850")
          set(CMAKE_DEFINE_FLAG_ASM "-D") # This is the same as default setting.
          set(CMAKE_INCLUDE_FLAG_ASM "-I") # This is the same as default setting.
          # Note: <FLAGS> includes CMAKE_${lang}_FLAGS, CMAKE_${lang}_FLAGS_<config> and `lang standard option(s)`
          # FIXME: Should ${RENESAS_${lang}_FLAGS} be used?
          set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -c -o<OBJECT> <SOURCE>"
                                                       "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -Xno_warning=11123 -o<DEP_FILE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -P -o<PREPROCESSED_SOURCE> <SOURCE>")
          set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> ${RENESAS_${lang}_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -S -o<ASSEMBLY_SOURCE> <SOURCE>")
        endif()

     

    if("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX")
        set(CMAKE_DEFINE_FLAG_ASM "-define=")
        set(CMAKE_INCLUDE_FLAG_ASM "-include=")
        # Note: <FLAGS> includes CMAKE_ASM_FLAGS, CMAKE_ASM_FLAGS_<config>
        # FIXME: Should ${RENESAS_ASM_FLAGS} be used?
        set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -nologo ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -output=<OBJECT> <SOURCE>"
                                     "<CMAKE_ASM_COMPILER> -nologo ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -MF=<DEP_FILE> <SOURCE>")
        set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS src;asm;s)
    elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78")
        set(CMAKE_DEFINE_FLAG_ASM "-define=")
        set(CMAKE_INCLUDE_FLAG_ASM "-include=")
        # Note: <FLAGS> includes CMAKE_ASM_FLAGS, CMAKE_ASM_FLAGS_<config>
        # FIXME: Should ${RENESAS_ASM_FLAGS} be used?
        set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -output=<OBJECT> <SOURCE>"
                                     "<CMAKE_ASM_COMPILER> ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -MF=<DEP_FILE> <SOURCE>")
        set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS asm;s)
    elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850")
        set(CMAKE_DEFINE_FLAG_ASM "-D") # This is the same as default setting.
        set(CMAKE_INCLUDE_FLAG_ASM "-I") # This is the same as default setting.
        # Note: <FLAGS> includes CMAKE_ASM_FLAGS, CMAKE_ASM_FLAGS_<config>
        # FIXME: Should ${RENESAS_ASM_FLAGS} be used?
        set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -o<OBJECT> <SOURCE>"
                                     "<CMAKE_ASM_COMPILER> ${RENESAS_ASM_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -MM -MF=<DEP_FILE> <SOURCE>")
        set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS asm;s)
    endif()

     

    [関連リンク]

    C/C++ header dependencies - Ninjaマニュアル
    ninja-build.org/manual.html#ref_headers

    Options Controlling the Preprocessor - GCCドキュメント
    gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
     
    [追記]

    なお、CC-RX(やCC-RLやCC-RHも?)では、-M や -MD や -MMD といったオプションは、受け付けないようです。

    [追記2]

    CC-RLとCC-RHのコンパイラの方は -M オプションは受け付けますね。(アセンブラの方は受け付けません。)

Children
No Data