C

Qt Quick Ultralite freertos_multitask Example

cmake_minimum_required (VERSION 3.21.1)

project(freertos_multitask VERSION 0.0.1 LANGUAGES C CXX ASM)
if (NOT TARGET Qul::Core)
    find_package(Qul)
endif()

add_subdirectory(freertos)

if(TARGET freertos_kernel) # FreeRTOS support implemented for this platform
    add_subdirectory(board_utils)

    qul_add_target(freertos_multitask
         src/main.cpp
         src/fancontrol.cpp
    )
    qul_target_generate_interfaces(freertos_multitask
        ${CMAKE_CURRENT_SOURCE_DIR}/src/fancontrol.h
    )
    qul_add_resource(freertos_multitask
        FILES
            images/background-dark.png
            images/fan-off.png
    )

    qul_target_qml_sources(freertos_multitask freertos_multitask.qml)
    target_link_libraries(freertos_multitask PRIVATE freertos_kernel board_utils)

    if (QUL_BUILD_QMLPROJECT_EXAMPLES)
        qul_add_target(freertos_multitask_qmlproject
             src/main.cpp
             src/fancontrol.cpp
             QML_PROJECT
             mcu_freertos_multitask.qmlproject
        )

        target_link_libraries(freertos_multitask_qmlproject PRIVATE freertos_kernel board_utils)
    endif()

elseif(NOT CMAKE_CROSSCOMPILING) # No FreeRTOS here - fallback for building on desktop platform
    qul_add_target(freertos_multitask_desktop src/fancontrol.cpp)
    qul_add_resource(freertos_multitask_desktop
        FILES
            images/background-dark.png
            images/fan-off.png
    )
    qul_target_qml_sources(freertos_multitask_desktop freertos_multitask.qml)
    qul_target_generate_interfaces(freertos_multitask_desktop
        ${CMAKE_CURRENT_SOURCE_DIR}/src/fancontrol.h
    )
    target_compile_definitions(freertos_multitask_desktop PRIVATE NO_LED)

    app_target_default_entrypoint(freertos_multitask_desktop freertos_multitask)

    if (QUL_BUILD_QMLPROJECT_EXAMPLES)
        qul_add_target(freertos_multitask_desktop_qmlproject src/fancontrol.cpp QML_PROJECT mcu_freertos_multitask.qmlproject)
        target_compile_definitions(freertos_multitask_desktop_qmlproject PRIVATE NO_LED)
        app_target_default_entrypoint(freertos_multitask_desktop_qmlproject freertos_multitask)
    endif()
else()
    message(STATUS "Skipping generating target: freertos_multitask")
endif()