cmake_minimum_required(VERSION 3.21) project(TactileIpc3D LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) find_package(Qt6 COMPONENTS Core Gui Widgets QuickWidgets OpenGLWidgets SerialPort REQUIRED Quick QuickControls2 QuickLayouts QuickDialogs2 LinguistTools ) set(QT_VERSION_MAJOR 6) add_subdirectory(3rdpart/QXlsx/QXlsx) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) qt_standard_project_setup() add_executable(TactileIpc3D main.cpp resources.qrc src/translation_manager.h src/translation_manager.cpp src/backend.h src/backend.cpp src/data_backend.h src/data_backend.cpp src/data_frame.h src/glwidget.cpp src/glwidget.h src/serial/serial_backend.h src/serial/serial_backend.cpp src/serial/serial_codec.h src/serial/serial_decoder.h src/serial/serial_format.h src/serial/serial_manager.h src/serial/serial_manager.cpp src/serial/serial_queue.h src/serial/serial_threads.h src/serial/serial_threads.cpp src/serial/serial_transport.h src/serial/serial_qt_transport.h src/serial/serial_qt_transport.cpp src/serial/serial_types.h src/serial/piezoresistive_a_protocol.h src/serial/piezoresistive_a_protocol.cpp src/ringbuffer.h src/ringbuffer.cpp src/sparkline_plotitem.h src/sparkling_plotitem.cpp src/globalhelper.h src/globalhelper.h ) target_link_libraries(TactileIpc3D PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::QuickWidgets Qt6::OpenGLWidgets Qt6::SerialPort Qt6::Quick Qt6::QuickControls2 Qt6::QuickLayouts Qt6::QuickDialogs2 QXlsx::QXlsx ) target_include_directories(TactileIpc3D PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/3rdpart/OpenCV/include ) set(TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/i18n/app_zh_CN.ts ${CMAKE_CURRENT_SOURCE_DIR}/i18n/app_en_US.ts ) file(GLOB_RECURSE I18N_CPP_SOURCES CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp ) file(GLOB_RECURSE I18N_QML_FILES CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/qml/*.qml ) qt_add_translations(TactileIpc3D TS_FILES ${TS_FILES} SOURCES ${I18N_CPP_SOURCES} QML_FILES ${I18N_QML_FILES} QM_FILES_OUTPUT_VARIABLE QM_FILES ) foreach(qm_file IN LISTS QM_FILES) get_filename_component(qm_name "${qm_file}" NAME) set_source_files_properties("${qm_file}" PROPERTIES QT_RESOURCE_ALIAS "${qm_name}") endforeach() qt_add_resources(TactileIpc3D i18n_resources PREFIX "/i18n" FILES ${QM_FILES} ) set(runtime_out_dir "${CMAKE_BINARY_DIR}/out") set_target_properties(TactileIpc3D PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${runtime_out_dir}" RUNTIME_OUTPUT_DIRECTORY_DEBUG "${runtime_out_dir}/Debug" RUNTIME_OUTPUT_DIRECTORY_RELEASE "${runtime_out_dir}/Release" RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${runtime_out_dir}/RelWithDebInfo" RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${runtime_out_dir}/MinSizeRel" ) include(GNUInstallDirs) install(TARGETS TactileIpc3D RUNTIME DESTINATION bin )