C
Indicators: Creating Safety-Critical UI
cmake_minimum_required(VERSION 3.16) project(indicators LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) # Define the condition for HOST_BUILD set(HOST_BUILD OFF) # Default to OFF if (NOT CMAKE_CROSSCOMPILING AND (NOT UNIX OR NOT (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm|aarch64") OR APPLE)) set(HOST_BUILD ON) endif() if(NOT DEFINED INSTALL_EXAMPLESDIR) set(INSTALL_EXAMPLESDIR "examples") endif() set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}") find_package(Qt6 REQUIRED COMPONENTS Core Qml Quick SafeRenderer SafeRendererTools SafePlatformAdaptation) set(sources main.cpp ) set (safeqmls "MainForm.ui.qml" ) # Resource files are passed to qtsafelayouttool set(resource_files "iso-icons.qrc" "qml.qrc" ) #resource.bin is loaded by qtsafelayouttool to find the resource data asset. qt6_add_binary_resources(resources_indicators ${resource_files} DESTINATION resource.bin) qsr_add_safelayout(generatelayout_indicators SAFE_QMLS ${safeqmls} OUTPUT_PATH ${CMAKE_CURRENT_LIST_DIR}/layoutData SAFE_LAYOUT_FONTS "${CMAKE_CURRENT_LIST_DIR}/../qtcluster/fonts" SAFE_RESOURCE "${CMAKE_CURRENT_LIST_DIR}/safeasset.qrc" INPUT_RESOURCES resource.bin) qsr_add_resource(buildresource_indicators sources "${CMAKE_CURRENT_LIST_DIR}/safeasset.qrc") if (HOST_BUILD) #The resources are linked with the binary in host to open the ControlUI.qml qt6_add_resources(sources ${resource_files}) endif() add_executable(indicators WIN32 MACOSX_BUNDLE ${sources} ) #Enable when using monitor feature: #target_compile_definitions(indicators PRIVATE USE_OUTPUTVERIFIER) add_dependencies(indicators generatelayout_indicators) if (HOST_BUILD) target_compile_definitions(indicators PUBLIC HOST_BUILD ) target_link_libraries(indicators PUBLIC Qt::Quick Qt::Widgets Qt::Qml ) else() message(STATUS "Indicators is not linked with Qt when building for embedded systems.") endif() target_link_libraries(indicators PUBLIC Qt::SafeRenderer Qt::SafePlatformAdaptation ) install(TARGETS indicators RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" )