C
Qt Quick Ultralite static_library Example
cmake_minimum_required (VERSION 3.21.1) project(static_library_example VERSION 0.0.1 LANGUAGES C CXX ASM) if (NOT TARGET Qul::Core) find_package(Qul) endif() if(QUL_OS STREQUAL "FreeRTOS") message(STATUS "Static library example is disabled for FreeRTOS based platforms") return() endif() set(EXAMPLE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}) # Add configuration of Qt4MCU_GUI target for prebuild step add_subdirectory(lib/Qt_for_MCU) if(CMAKE_CROSSCOMPILING) set(CMAKE_EXECUTABLE_SUFFIX ".elf") endif() add_executable(static_library_example src/main.cpp ) qul_generate_flash_target(static_library_example) # If QUL GUI library has IPO enabled then we need also enable it for our target get_target_property(QUL_LIB_IPO_CONFIG Qt4MCU_GUI INTERPROCEDURAL_OPTIMIZATION) set_target_properties(static_library_example PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${QUL_LIB_IPO_CONFIG}) target_include_directories(static_library_example PRIVATE # Add include folder from QtForMCU installation folder ${Qul_DIR}/include # Add folder containing qul_run.h header file ${CMAKE_CURRENT_BINARY_DIR}/lib/Qt_for_MCU # Add folder containing sensorAPI.h header file ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_link_libraries(static_library_example PRIVATE # Static library containing UI and interfaces Qt4MCU_GUI # Depending on which features the Qt4MCU_GUI static library is using, # you need to link the proper static library to the executable. # In this example list of the libraries which are changing depending on # CMake variables configuration are described. Just uncomment those which # apply to your setup. Config which applies to this example is uncommented. # # Font engines: # - If QUL_FONT_ENGINE == Spark # If QUL_PLATFORM_REQUIRED_IMAGE_ALIGNMENT not set or 0 or 1 # Qul::MonotypeFontEngine # else # Qul::MonotypeFontEngineAligned # # If QUL_COMPLEX_TEXT_RENDERING == ON # Qul::MonotypeShaperEngine # Qul::MonotypeUnicodeEngine # else # Qul::MonotypeUnicodeEngineShaperDisabled # # - If QUL_FONT_ENGINE == Static # Qul::MonotypeUnicodeEngineShaperDisabled # Qul::MonotypeUnicodeEngineShaperDisabled # PNG decoder (add when project uses PNG images): # - QUL_RESOURCE_COMPRESSION == ON # Qul::PNGDecoderLodePNG # - QUL_RESOURCE_COMPRESSION not set or OFF # Qul::PNGDecoderNull # Additional lib which needs to be linked along to Qt QuickUltralite Core $<$<BOOL:${CMAKE_CROSSCOMPILING}>:Qul::DeviceLink> # Static library with Qt QuickUltralite Core Qul::Core # Static library with Qt QuickUltralite Platform abstraction. # Should be replaced by custom implementation adapted to target board Qul::Platform # All additional Qul libraries used by QtForMCU GUI needs to be also # linked with application Qul::Controls # Satisfy cyclic dependency between Qt4MCU_GUI and Qul::Core # libraries (Qul::Core depends on symbols autogenerated # in Qt4MCU_GUI build process) # Same sets of libraries chosen above need to match those below. # For example if above we choose Qul::MonotypeUnicodeEngineShaperDisabled # then here below we add the same library as cyclic dependency to Qul::Core. Qul::Core $<$<BOOL:${CMAKE_CROSSCOMPILING}>:Qul::DeviceLink> Qul::MonotypeUnicodeEngineShaperDisabled Qt4MCU_GUI ) target_link_libraries(static_library_example PRIVATE Qul::PlatformDefaultLinkerScript)