cmake编译S32K的bin文件(3)

目录

一、code目录下的cmake

二、code下SDK的cmake

三、Generated_Code下的cmake

四、sources下的cmake

 五、编译

一、code目录下的cmake

cmake_minimum_required(VERSION 3.19)

add_compile_definitions(
    CPU_S32K144HFT0VLLT
)
# 生成sdk库 基础
add_subdirectory(SDK)
# 生成generated_code库 组件库 需要sdk支持
add_subdirectory(Generated_Code)
# 生成实现文件库 需要generated_code sdk支持 一般调用组件,特殊调用sdk
add_subdirectory(Sources)

前面执行的cmake已经链接了code目录下的启动文件,SDK为硬件寄存器封装成函数调用接口,

Generated_Code S32DS组件库可以通过S32DS软件生成,并且可以自动生成代码。对应模块有具体的调用方法。主要是在suorces下编写自己的代码。

二、code下SDK的cmake

set(TARGET sdk)

# 添加sdk库
add_library(${TARGET}
    # PRIVATE
    # {{BEGIN_TARGET_SOURCES}}
    ${CMAKE_CURRENT_LIST_DIR}/platform/devices/S32K144/startup/system_S32K144.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/devices/startup.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/adc/adc_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/clock/S32K144/clock_S32K144.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/clock/clock_manager.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/edma/edma_common.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/edma/edma_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/edma/edma_irq.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/flash/flash_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/flexcan/flexcan_common.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/flexcan/flexcan_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/flexcan/flexcan_irq.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/ftm/ftm_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/interrupt/interrupt_manager.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/lpi2c/lpi2c_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/lpi2c/lpi2c_irq.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/lpspi/lpspi_irq.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/lpspi/lpspi_master_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/lpspi/lpspi_shared_function.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/lpspi/lpspi_slave_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/lpuart/lpuart_common.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/lpuart/lpuart_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/lpuart/lpuart_irq.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/pins/pins_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/power/power_manager_common.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/power/power_manager_smc.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/rtc/rtc_driver.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/rtc/rtc_irq.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/src/wdog/wdog_driver.c

    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/adc/adc_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/dmamux/dmamux_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/edma/edma_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/flexcan/flexcan_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/ftm/ftm_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/lpi2c/lpi2c_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/lpspi/lpspi_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/lpuart/lpuart_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/pcc/pcc_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/pmc/pmc_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/port/port_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/rcm/rcm_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/rtc/rtc_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/scg/scg_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/sim/S32K144/sim_hal_S32K144.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/smc/smc_hal.c
    ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/wdog/wdog_hal.c

    ${CMAKE_CURRENT_LIST_DIR}/rtos/osif/osif_baremetal.c

    # {{END_TARGET_SOURCES}}
  )


# $<TARGET_PROPERTY:tgt,prop>
# prop目标上的属性值tgt。
# 请注意,tgt它不会作为评估此表达式的目标的依赖项添加。
# 添加sdk *.h支持,调用时需要
target_include_directories(${TARGET}
    PUBLIC
        ${CMAKE_CURRENT_LIST_DIR}/platform/devices/
        ${CMAKE_CURRENT_LIST_DIR}/platform/devices/common/
        ${CMAKE_CURRENT_LIST_DIR}/platform/devices/S32K144/include
        ${CMAKE_CURRENT_LIST_DIR}/platform/devices/S32K144/startup/
        ${CMAKE_CURRENT_LIST_DIR}/platform/drivers/inc/
        ${CMAKE_CURRENT_LIST_DIR}/platform/hal/inc/
        ${CMAKE_CURRENT_LIST_DIR}/rtos/osif/

        ${CMAKE_CURRENT_LIST_DIR}/platform/hal/src/sim/S32K144/
        # ${CMAKE_CURRENT_LIST_DIR}/../Sources/mid/kernel/
        # ${CMAKE_CURRENT_LIST_DIR}/../Sources/include/
        $<TARGET_PROPERTY:source,INTERFACE_INCLUDE_DIRECTORIES>
  )

三、Generated_Code下的cmake

et(TARGET Generated_Code)

# 添加所以*.c
file(GLOB SOURCES ${CMAKE_CURRENT_LIST_DIR}/*.c)

# 添加generated_code
add_library(${TARGET}
    # {{BEGIN_TARGET_SOURCES}}
    ${SOURCES}
    # {{END_TARGET_SOURCES}}
  )

# 添加*.h支持(使用要一样*.h) 调用的sdk,需要sdk支持
target_include_directories(${TARGET}
  PUBLIC
    ${CMAKE_CURRENT_LIST_DIR}/
    $<TARGET_PROPERTY:sdk,INTERFACE_INCLUDE_DIRECTORIES>
  )

四、sources下的cmake

 

# 设置源文件
set(TARGET source)

# file(GLOB <variable>
#      [LIST_DIRECTORIES true|false] [RELATIVE <path>] [CONFIGURE_DEPENDS]
#      [<globbing-expressions>...])
# 生成与 匹配的文件列表<globbing-expressions>并将其存储到<variable>. 
# 结果将按字典顺序排列。
file(GLOB 
    SOURCES     
    ${CMAKE_CURRENT_LIST_DIR}/mid/acc/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/adc/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/aes/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/brdinfo/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/call/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/can_flexcan/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/can_spi/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/clock/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/config/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/dbg_trace/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/dbg_uart/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/edma/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/flash/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/gpio/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/i2c/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/ipc_spi/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/kernel/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/led/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/msg/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/pin/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/pm/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/power_mode_switch/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/rtc/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/softrtc/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/srs/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/timer/*.c
    ${CMAKE_CURRENT_LIST_DIR}/mid/wdg/*.c

    ${CMAKE_CURRENT_LIST_DIR}/app/battery/*.c
    # ${CMAKE_CURRENT_LIST_DIR}/app/bcm_auth/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/can_mgr/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/custom/*.c
    # ${CMAKE_CURRENT_LIST_DIR}/app/can_nm/*.c
    # ${CMAKE_CURRENT_LIST_DIR}/app/can_trans_lockcar/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/ecu_upgrade/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/mcu_mgr/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/power/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/nm_autosar/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/nm_osek/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/scom/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/shell/*.c
    # ${CMAKE_CURRENT_LIST_DIR}/app/ucom/*.c
    # ${CMAKE_CURRENT_LIST_DIR}/app/uds/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/tp/proxy/*.c
    ${CMAKE_CURRENT_LIST_DIR}/app/tp/uds/*.c
    )

# 创建source库
add_library(${TARGET}
    # {{BEGIN_TARGET_SOURCES}}
    ${SOURCES}
    # {{END_TARGET_SOURCES}}
  )

# target_include_directories(<target> [SYSTEM] [BEFORE]
#                            <INTERFACE|PUBLIC|PRIVATE> [items1...]
#                            [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
# 将包含目录添加到目标。
# 添加source库的支持 *.h  本身的支持 sdk  generated_code
target_include_directories(${TARGET}
    PUBLIC
        ${CMAKE_CURRENT_LIST_DIR}/
        ${CMAKE_CURRENT_LIST_DIR}/include

        $<TARGET_PROPERTY:sdk,INTERFACE_INCLUDE_DIRECTORIES>
        $<TARGET_PROPERTY:Generated_Code,INTERFACE_INCLUDE_DIRECTORIES>
  )

 五、编译 

编译生成三个库函数被主函数调用。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值