Files
tactileipc3d/CMakeLists.txt
2026-01-20 23:41:46 +08:00

140 lines
3.7 KiB
CMake

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
)
if (WIN32)
target_link_directories(TactileIpc3D PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/3rdpart/OpenCV/x64/mingw/lib
)
target_link_libraries(TactileIpc3D PRIVATE
opencv_core4140
opencv_imgproc4140
)
endif()
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
)