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

    > > ルネサスコンパイラ(CC-RX/CC-RL/CC-RH)向け定義ファイル
    > IARさんのコンパイラ向けの定義ファイルが既に存在しますので、それを手本にして作成するのが良いですかね、、、

    どうも思うように動いてくれないので調べていたら、Azure RTOSのARM Cortexのサンプルコードで、GNUARMとEWARMのCMakeファイルの記述の違いが、私が思い込んでいたものの斜め上をいく違いでした。互換性が良くないのかな?、、、

    GNUARMの場合 (赤文字箇所の部分も含めてGNURXの場合のスタイルと同様)

    getting-started\cmake\arm-gcc-cortex-toolchain.cmake

    # Copyright (c) Microsoft Corporation.
    # Licensed under the MIT License.

    set(CMAKE_SYSTEM_NAME Generic)

    set(TARGET_TRIPLET "arm-none-eabi-")

    # default to Debug build
    if(NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build, options are: Debug Release." FORCE)
    endif()

    # do some windows specific logic
    if(WIN32)
        set(TOOLCHAIN_EXT ".exe")
    else()
        set(TOOLCHAIN_EXT "")
    endif(WIN32)

    find_program(COMPILER_ON_PATH "${TARGET_TRIPLET}gcc${TOOLCHAIN_EXT}")

    if(DEFINED ENV{ARM_GCC_PATH})
        # use the environment variable first    
        file(TO_CMAKE_PATH $ENV{ARM_GCC_PATH} ARM_TOOLCHAIN_PATH)
        message(STATUS "Using ENV variable ARM_GCC_PATH = ${ARM_TOOLCHAIN_PATH}")
    elseif(COMPILER_ON_PATH)
        # then check on the current path
        get_filename_component(ARM_TOOLCHAIN_PATH ${COMPILER_ON_PATH} DIRECTORY)
        message(STATUS "Using ARM GCC from path = ${ARM_TOOLCHAIN_PATH}")
    else()
        message(FATAL_ERROR "Unable to find ARM GCC. Either add to your PATH, or define ARM_GCC_PATH to the compiler location")
    endif()

    # Perform compiler test with the static library
    set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

    set(CMAKE_C_COMPILER    ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}gcc${TOOLCHAIN_EXT})
    set(CMAKE_CXX_COMPILER  ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}g++${TOOLCHAIN_EXT})
    set(CMAKE_ASM_COMPILER  ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}gcc${TOOLCHAIN_EXT})
    set(CMAKE_LINKER        ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}gcc${TOOLCHAIN_EXT})
    set(CMAKE_SIZE_UTIL     ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}size${TOOLCHAIN_EXT})
    set(CMAKE_OBJCOPY       ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}objcopy${TOOLCHAIN_EXT})
    set(CMAKE_OBJDUMP       ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}objdump${TOOLCHAIN_EXT})
    set(CMAKE_NM_UTIL       ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}nm${TOOLCHAIN_EXT})

    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

    set(CMAKE_COMMON_FLAGS "-g3 --specs=nano.specs -ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin -fshort-enums -Wall -Wextra -Wuninitialized -Wmaybe-uninitialized -Wshadow -Wdouble-promotion -Werror -Wno-unused-parameter")
    set(CMAKE_C_FLAGS     "${MCPU_FLAGS} ${VFP_FLAGS} ${CMAKE_COMMON_FLAGS}")
    set(CMAKE_CXX_FLAGS "${MCPU_FLAGS} ${VFP_FLAGS} ${CMAKE_COMMON_FLAGS}")
    set(CMAKE_ASM_FLAGS "${MCPU_FLAGS} ${VFP_FLAGS} ${CMAKE_COMMON_FLAGS}")
    set(CMAKE_EXE_LINKER_FLAGS "${LD_FLAGS} -fno-common -Wl,--gc-sections,-print-memory-usage")

    set(CMAKE_C_FLAGS_DEBUG "-O0")
    set(CMAKE_CXX_ASM_FLAGS_DEBUG "-O0")
    set(CMAKE_ASM_FLAGS_DEBUG "")

    set(CMAKE_C_FLAGS_RELEASE "-Os")
    set(CMAKE_CXX_FLAGS_RELEASE "-Os")
    set(CMAKE_ASM_FLAGS_RELEASE "")

     
    EWARMの場合 (特に赤文字箇所の部分がGNURXの場合のスタイルと異なるのは想定外)

    getting-started\cmake\arm-iar-cortex-toolchain.cmake

    set(CMAKE_SYSTEM_NAME Generic)

    # Set the EW installation root directory
    set(EWARM_ROOT_DIR "C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.4/arm")

    # default to Debug build
    if(NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build, options are: Debug Release." FORCE)
    endif()

    # Set up the CMake variables for compiler and assembler
    set(CMAKE_C_COMPILER "${EWARM_ROOT_DIR}/bin/iccarm.exe" "${CPU_FLAGS} -e")
    set(CMAKE_CXX_COMPILER "${EWARM_ROOT_DIR}/bin/iccarm.exe" "${CPU_FLAGS} --c++")
    set(CMAKE_ASM_COMPILER "${EWARM_ROOT_DIR}/bin/iasmarm.exe" "${CPU_FLAGS}")

    set(CMAKE_C_LINK_FLAGS "--semihosting")
    set(CMAKE_CXX_LINK_FLAGS "--semihosting")

    set(CMAKE_C_FLAGS_DEBUG_INIT "-On")
    set(CMAKE_CXX_FLAGS_DEBUG_INIT "-On")

     

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

    > > ルネサスコンパイラ(CC-RX/CC-RL/CC-RH)向け定義ファイル
    > IARさんのコンパイラ向けの定義ファイルが既に存在しますので、それを手本にして作成するのが良いですかね、、、

    どうも思うように動いてくれないので調べていたら、Azure RTOSのARM Cortexのサンプルコードで、GNUARMとEWARMのCMakeファイルの記述の違いが、私が思い込んでいたものの斜め上をいく違いでした。互換性が良くないのかな?、、、

    GNUARMの場合 (赤文字箇所の部分も含めてGNURXの場合のスタイルと同様)

    getting-started\cmake\arm-gcc-cortex-toolchain.cmake

    # Copyright (c) Microsoft Corporation.
    # Licensed under the MIT License.

    set(CMAKE_SYSTEM_NAME Generic)

    set(TARGET_TRIPLET "arm-none-eabi-")

    # default to Debug build
    if(NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build, options are: Debug Release." FORCE)
    endif()

    # do some windows specific logic
    if(WIN32)
        set(TOOLCHAIN_EXT ".exe")
    else()
        set(TOOLCHAIN_EXT "")
    endif(WIN32)

    find_program(COMPILER_ON_PATH "${TARGET_TRIPLET}gcc${TOOLCHAIN_EXT}")

    if(DEFINED ENV{ARM_GCC_PATH})
        # use the environment variable first    
        file(TO_CMAKE_PATH $ENV{ARM_GCC_PATH} ARM_TOOLCHAIN_PATH)
        message(STATUS "Using ENV variable ARM_GCC_PATH = ${ARM_TOOLCHAIN_PATH}")
    elseif(COMPILER_ON_PATH)
        # then check on the current path
        get_filename_component(ARM_TOOLCHAIN_PATH ${COMPILER_ON_PATH} DIRECTORY)
        message(STATUS "Using ARM GCC from path = ${ARM_TOOLCHAIN_PATH}")
    else()
        message(FATAL_ERROR "Unable to find ARM GCC. Either add to your PATH, or define ARM_GCC_PATH to the compiler location")
    endif()

    # Perform compiler test with the static library
    set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

    set(CMAKE_C_COMPILER    ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}gcc${TOOLCHAIN_EXT})
    set(CMAKE_CXX_COMPILER  ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}g++${TOOLCHAIN_EXT})
    set(CMAKE_ASM_COMPILER  ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}gcc${TOOLCHAIN_EXT})
    set(CMAKE_LINKER        ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}gcc${TOOLCHAIN_EXT})
    set(CMAKE_SIZE_UTIL     ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}size${TOOLCHAIN_EXT})
    set(CMAKE_OBJCOPY       ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}objcopy${TOOLCHAIN_EXT})
    set(CMAKE_OBJDUMP       ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}objdump${TOOLCHAIN_EXT})
    set(CMAKE_NM_UTIL       ${ARM_TOOLCHAIN_PATH}/${TARGET_TRIPLET}nm${TOOLCHAIN_EXT})

    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

    set(CMAKE_COMMON_FLAGS "-g3 --specs=nano.specs -ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin -fshort-enums -Wall -Wextra -Wuninitialized -Wmaybe-uninitialized -Wshadow -Wdouble-promotion -Werror -Wno-unused-parameter")
    set(CMAKE_C_FLAGS     "${MCPU_FLAGS} ${VFP_FLAGS} ${CMAKE_COMMON_FLAGS}")
    set(CMAKE_CXX_FLAGS "${MCPU_FLAGS} ${VFP_FLAGS} ${CMAKE_COMMON_FLAGS}")
    set(CMAKE_ASM_FLAGS "${MCPU_FLAGS} ${VFP_FLAGS} ${CMAKE_COMMON_FLAGS}")
    set(CMAKE_EXE_LINKER_FLAGS "${LD_FLAGS} -fno-common -Wl,--gc-sections,-print-memory-usage")

    set(CMAKE_C_FLAGS_DEBUG "-O0")
    set(CMAKE_CXX_ASM_FLAGS_DEBUG "-O0")
    set(CMAKE_ASM_FLAGS_DEBUG "")

    set(CMAKE_C_FLAGS_RELEASE "-Os")
    set(CMAKE_CXX_FLAGS_RELEASE "-Os")
    set(CMAKE_ASM_FLAGS_RELEASE "")

     
    EWARMの場合 (特に赤文字箇所の部分がGNURXの場合のスタイルと異なるのは想定外)

    getting-started\cmake\arm-iar-cortex-toolchain.cmake

    set(CMAKE_SYSTEM_NAME Generic)

    # Set the EW installation root directory
    set(EWARM_ROOT_DIR "C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.4/arm")

    # default to Debug build
    if(NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build, options are: Debug Release." FORCE)
    endif()

    # Set up the CMake variables for compiler and assembler
    set(CMAKE_C_COMPILER "${EWARM_ROOT_DIR}/bin/iccarm.exe" "${CPU_FLAGS} -e")
    set(CMAKE_CXX_COMPILER "${EWARM_ROOT_DIR}/bin/iccarm.exe" "${CPU_FLAGS} --c++")
    set(CMAKE_ASM_COMPILER "${EWARM_ROOT_DIR}/bin/iasmarm.exe" "${CPU_FLAGS}")

    set(CMAKE_C_LINK_FLAGS "--semihosting")
    set(CMAKE_CXX_LINK_FLAGS "--semihosting")

    set(CMAKE_C_FLAGS_DEBUG_INIT "-On")
    set(CMAKE_CXX_FLAGS_DEBUG_INIT "-On")

     

Children
No Data