|
1 | | -cmake_minimum_required(VERSION 3.10) |
| 1 | +cmake_minimum_required(VERSION 3.12) |
2 | 2 |
|
3 | 3 | project(SerialPort |
4 | | - LANGUAGES CXX |
5 | | - VERSION 1.13.0 |
6 | | - ) |
| 4 | + DESCRIPTION "Read byte stream from COM port and emit as an LSL stream" |
| 5 | + HOMEPAGE_URL "https://github.com/labstreaminglayer/App-SerialPort/" |
| 6 | + LANGUAGES CXX |
| 7 | + VERSION 1.1.0 |
| 8 | +) |
| 9 | + |
| 10 | +set(CMAKE_CXX_STANDARD 17) |
| 11 | +set(CMAKE_CXX_STANDARD_REQUIRED On) |
7 | 12 |
|
8 | | -# also look for CMake modules in the cmake subfolder |
9 | | -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") |
| 13 | +# Dependencies |
10 | 14 |
|
11 | | -# Find an installed liblsl in paths set by the user (LSL_INSTALL_ROOT) |
12 | | -# and some default paths |
| 15 | +## LSL |
13 | 16 | find_package(LSL REQUIRED |
14 | | - HINTS ${LSL_INSTALL_ROOT} |
15 | | - "${CMAKE_CURRENT_LIST_DIR}/../../LSL/liblsl/build/install" |
16 | | - "${CMAKE_CURRENT_LIST_DIR}/../../LSL/liblsl/out/install/x64-Release" |
17 | | - PATH_SUFFIXES share/LSL) |
18 | | -get_filename_component(LSL_PATH ${LSL_CONFIG} DIRECTORY) |
19 | | -message(STATUS "Found LSL lib in ${LSL_PATH}") |
20 | | -LSLAPP_Setup_Boilerplate() |
21 | | - |
22 | | -set(CMAKE_INCLUDE_CURRENT_DIR ON) |
| 17 | + HINTS ${LSL_INSTALL_ROOT} |
| 18 | + "${CMAKE_CURRENT_LIST_DIR}/../../LSL/liblsl/build/" |
| 19 | + "${CMAKE_CURRENT_LIST_DIR}/../../LSL/liblsl/build/install" |
| 20 | + "${CMAKE_CURRENT_LIST_DIR}/../../LSL/liblsl/out/build/x64-Release" |
| 21 | + "${CMAKE_CURRENT_LIST_DIR}/../../LSL/liblsl/out/install/x64-Release" |
| 22 | + "${CMAKE_CURRENT_LIST_DIR}/../../LSL/liblsl/cmake-build-release/install" |
| 23 | + PATH_SUFFIXES share/LSL |
| 24 | +) |
| 25 | + |
| 26 | +## Qt |
23 | 27 | set(CMAKE_AUTOMOC ON) |
24 | | -set(CMAKE_AUTOUIC ON) |
25 | 28 | set(CMAKE_AUTORCC ON) |
| 29 | +set(CMAKE_AUTOUIC ON) |
| 30 | +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) |
| 31 | +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets) |
26 | 32 |
|
27 | | -find_package(Qt5 REQUIRED COMPONENTS Widgets) |
28 | | - |
| 33 | +## Threads |
29 | 34 | find_package(Threads REQUIRED) |
30 | 35 |
|
31 | | -add_executable(${PROJECT_NAME} MACOSX_BUNDLE WIN32 |
32 | | - main.cpp |
33 | | - mainwindow.cpp |
34 | | - mainwindow.hpp |
35 | | - mainwindow.ui |
| 36 | + |
| 37 | +# Targets |
| 38 | + |
| 39 | +add_executable(${PROJECT_NAME}) |
| 40 | + |
| 41 | +target_sources(${PROJECT_NAME} PRIVATE |
| 42 | + main.cpp |
| 43 | + mainwindow.cpp |
| 44 | + mainwindow.hpp |
| 45 | + mainwindow.ui |
36 | 46 | ) |
37 | 47 |
|
38 | 48 | target_link_libraries(${PROJECT_NAME} |
39 | | - PRIVATE |
40 | | - Qt5::Widgets |
41 | | - Threads::Threads |
42 | | - LSL::lsl |
| 49 | + PRIVATE |
| 50 | + Qt${QT_VERSION_MAJOR}::Core |
| 51 | + Qt${QT_VERSION_MAJOR}::Widgets |
| 52 | + Threads::Threads |
| 53 | + LSL::lsl |
43 | 54 | ) |
44 | 55 |
|
45 | | -target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_14) |
46 | | - |
47 | 56 | installLSLApp(${PROJECT_NAME}) |
48 | 57 | installLSLAuxFiles(${PROJECT_NAME} |
49 | | - ${PROJECT_NAME}.cfg |
| 58 | + ${PROJECT_NAME}.cfg |
| 59 | + LICENSE |
| 60 | + README.md |
50 | 61 | ) |
| 62 | + |
| 63 | +get_target_property(QT_QMAKE_EXECUTABLE Qt::qmake IMPORTED_LOCATION) |
| 64 | +get_filename_component(QT_WINDEPLOYQT_EXECUTABLE ${QT_QMAKE_EXECUTABLE} PATH) |
| 65 | +set(QT_WINDEPLOYQT_EXECUTABLE "${QT_WINDEPLOYQT_EXECUTABLE}/windeployqt.exe") |
| 66 | + |
| 67 | +add_custom_command( |
| 68 | + TARGET ${PROJECT_NAME} POST_BUILD |
| 69 | + COMMAND ${QT_WINDEPLOYQT_EXECUTABLE} |
| 70 | + --no-translations --no-system-d3d-compiler |
| 71 | + --qmldir ${CMAKE_CURRENT_SOURCE_DIR} |
| 72 | + $<TARGET_FILE_DIR:${PROJECT_NAME}>) |
| 73 | + |
| 74 | +add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD |
| 75 | + COMMAND ${CMAKE_COMMAND} -E copy_if_different |
| 76 | + $<TARGET_FILE:LSL::lsl> |
| 77 | + $<TARGET_FILE_DIR:${PROJECT_NAME}>) |
| 78 | + |
| 79 | +add_custom_command( |
| 80 | + TARGET ${PROJECT_NAME} POST_BUILD |
| 81 | + COMMAND ${CMAKE_COMMAND} -E copy |
| 82 | + ${CMAKE_CURRENT_SOURCE_DIR}//${PROJECT_NAME}.cfg |
| 83 | + $<TARGET_FILE_DIR:${PROJECT_NAME}>) |
| 84 | + |
| 85 | +if(Qt6_FOUND) |
| 86 | + qt_finalize_executable(${PROJECT_NAME}) |
| 87 | +endif(Qt6_FOUND) |
| 88 | + |
| 89 | + |
51 | 90 | LSLGenerateCPackConfig() |
0 commit comments