C
Qt Quick Ultralite multitask Example
cmake_minimum_required (VERSION 3.21.1)
project(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(multitask
src/freertos/main.cpp
src/freertos/hardwarecontrol.cpp
src/freertos/threads/led_thread.cpp
src/freertos/threads/qul_thread.cpp
src/freertos/threads/fan_thread.cpp
QML_PROJECT
mcu_multitask.qmlproject
)
target_compile_definitions(multitask PRIVATE FREERTOS)
target_include_directories(multitask PRIVATE src src/freertos/threads)
target_link_libraries(multitask PRIVATE freertos_kernel board_utils)
elseif(NOT CMAKE_CROSSCOMPILING) # No FreeRTOS here - fallback for building on desktop platform
qul_add_target(multitask_desktop
src/desktop/hardwarecontrol.cpp
QML_PROJECT
mcu_multitask.qmlproject
GENERATE_ENTRYPOINT
)
target_compile_definitions(multitask_desktop PRIVATE DESKTOP)
target_include_directories(multitask_desktop PRIVATE src)
else()
message(STATUS "Skipping generating target: multitask")
endif()