C
Qt Quick Ultralite 文件加载示例
cmake_minimum_required (VERSION 3.21.1) project(fileloading VERSION 0.0.1 LANGUAGES C CXX ASM) if (NOT TARGET Qul::Core) find_package(Qul) endif() qul_add_target(fileloading QML_PROJECT mcu_fileloading.qmlproject os/${QUL_OS_LOWERCASE}/main.cpp) if(CMAKE_CROSSCOMPILING) if(QUL_PLATFORM MATCHES "^stm32f469i" OR QUL_PLATFORM MATCHES "^stm32f769i") target_sources(fileloading PRIVATE 3rdparty/FatFs/src/diskio.c 3rdparty/FatFs/src/ff.c 3rdparty/FatFs/src/ff_gen_drv.c 3rdparty/FatFs/src/option/unicode.c 3rdparty/FatFs/src/sd_diskio.c stm/board_config.cpp) if (QUL_PLATFORM MATCHES "^stm32f469i") target_sources(fileloading PRIVATE ${QUL_BOARD_SDK_DIR}/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c ${QUL_BOARD_SDK_DIR}/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.c ${QUL_BOARD_SDK_DIR}/Drivers/BSP/STM32469I-Discovery/stm32469i_discovery_sd.c) else() target_sources(fileloading PRIVATE ${QUL_BOARD_SDK_DIR}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c ${QUL_BOARD_SDK_DIR}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c ${QUL_BOARD_SDK_DIR}/Drivers/BSP/STM32F769I-Discovery/stm32f769i_discovery_sd.c) endif() if(NOT IAR) # Required for SDK code to build target_compile_options(fileloading PRIVATE -Wno-unused-parameter ) endif() target_include_directories(fileloading PRIVATE 3rdparty/FatFs/src) target_compile_definitions(fileloading PRIVATE FF_FS_READONLY) target_link_libraries(fileloading PRIVATE Qul::PlatformBSPConfig) elseif(QUL_PLATFORM MATCHES "^mimxrt") set(NXP_BOARD_CORE_DIR "") if (QUL_PLATFORM MATCHES "^mimxrt1050") set(NXP_BOARD_DRIVER_DIR MIMXRT1052) elseif (QUL_PLATFORM MATCHES "^mimxrt1060") set(NXP_BOARD_DRIVER_DIR MIMXRT1062) elseif (QUL_PLATFORM MATCHES "^mimxrt1064") set(NXP_BOARD_DRIVER_DIR MIMXRT1064) elseif (QUL_PLATFORM MATCHES "^mimxrt1170") set(NXP_BOARD_DRIVER_DIR MIMXRT1176) set(NXP_BOARD_CORE_DIR cm7) else() message(FATAL_ERROR "Unsupported NXP board") endif() if (QUL_OS MATCHES "FreeRTOS") if (QUL_PLATFORM MATCHES "^mimxrt10") # mimxrt1050-evk and mimxrt1064-evk qul_override_freertos_heap_size(fileloading "472 * 1024") endif() endif() target_sources(fileloading PRIVATE 3rdparty/FatFs/src/diskio.c 3rdparty/FatFs/src/ff.c 3rdparty/FatFs/src/ff_gen_drv.c 3rdparty/FatFs/src/option/unicode.c 3rdparty/NXP/${NXP_BOARD_DRIVER_DIR}/sdmmc_config.c # We have to use a modified version of fsl_adapter_gpio.c to comment out the # GPIO1_Combined_0_15_IRQHandler() handler, which otherwise conflicts with the one in platform_irq.c 3rdparty/NXP/fsl_adapter_igpio.c ${QUL_BOARD_SDK_DIR}/devices/${NXP_BOARD_DRIVER_DIR}/drivers/fsl_usdhc.c ${QUL_BOARD_SDK_DIR}/devices/${NXP_BOARD_DRIVER_DIR}/drivers/${NXP_BOARD_CORE_DIR}/fsl_cache.c ${QUL_BOARD_SDK_DIR}/middleware/sdmmc/common/fsl_sdmmc_common.c ${QUL_BOARD_SDK_DIR}/middleware/sdmmc/host/usdhc/non_blocking/fsl_sdmmc_host.c ${QUL_BOARD_SDK_DIR}/middleware/sdmmc/osa/fsl_sdmmc_osa.c ${QUL_BOARD_SDK_DIR}/middleware/sdmmc/sd/fsl_sd.c nxp/board_config.cpp) if (QUL_OS STREQUAL "FreeRTOS") target_sources(fileloading PRIVATE ${QUL_BOARD_SDK_DIR}/components/osa/fsl_os_abstraction_free_rtos.c) else() target_sources(fileloading PRIVATE ${QUL_BOARD_SDK_DIR}/components/osa/fsl_os_abstraction_bm.c) endif() if(NOT IAR) # Required for SDK code to build target_compile_options(fileloading PRIVATE -Wno-unused-parameter -Wno-unused-variable ) endif() target_include_directories(fileloading PRIVATE 3rdparty/FatFs/src 3rdparty/NXP/${NXP_BOARD_DRIVER_DIR} ${QUL_BOARD_SDK_DIR}/components/gpio ${QUL_BOARD_SDK_DIR}/components/lists ${QUL_BOARD_SDK_DIR}/components/osa ${QUL_BOARD_SDK_DIR}/devices/${NXP_BOARD_DRIVER_DIR}/drivers/${NXP_BOARD_CORE_DIR} ${QUL_BOARD_SDK_DIR}/middleware/sdmmc/common ${QUL_BOARD_SDK_DIR}/middleware/sdmmc/host/usdhc/ ${QUL_BOARD_SDK_DIR}/middleware/sdmmc/osa ${QUL_BOARD_SDK_DIR}/middleware/sdmmc/sd) target_compile_definitions(fileloading PRIVATE FF_FS_READONLY SD_ENABLED) target_link_libraries(fileloading PRIVATE Qul::PlatformBSPConfig) else() message(FATAL_ERROR "Unsupported platform") endif() endif() app_target_setup_os(fileloading) if (QUL_PLATFORM STREQUAL "qt") target_sources(fileloading PRIVATE desktop/board_config.cpp) target_sources(fileloading PRIVATE desktop/posixfilesystem.cpp) target_compile_features(fileloading PRIVATE cxx_std_17) target_include_directories(fileloading PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) # On desktop we are not using a SD-Card and the files need to be available # next to the built binary. add_custom_command( TARGET fileloading POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/fileloading.dir/resources/logos $<TARGET_FILE_DIR:${PROJECT_NAME}>/logos) endif()