@@ -13,6 +13,8 @@ SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake" ${CMAKE_MODULE_PATH})
1313set (CMAKE_CXX_STANDARD 17)
1414set (CMAKE_CXX_STANDARD_REQUIRED On )
1515
16+ option (BUILD_GUI "Build the GUI, set to off for CLI only build" ON )
17+
1618# Dependencies
1719
1820## LSL
@@ -34,20 +36,22 @@ else()
3436 )
3537endif ()
3638
37- ## Qt
38- set (CMAKE_AUTOMOC ON ) # The later version of this in LSLCMake is somehow not enough.
39- set (CMAKE_AUTORCC ON )
40- set (CMAKE_AUTOUIC ON )
41- find_package (Qt6 COMPONENTS Core Widgets Network DBus)
42- if (NOT Qt6_FOUND)
43- # If we require 5.15 then we can use version-agnostic linking, but 5.15 not easily available on Ubuntu.
44- find_package (Qt5 COMPONENTS Core Widgets Network DBus REQUIRED)
45- add_executable (${PROJECT_NAME} MACOSX_BUNDLE )
46- set (LSLAPP_QT_VER Qt5)
47- else ()
48- qt_add_executable(${PROJECT_NAME} MACOSX_BUNDLE MANUAL_FINALIZATION)
49- set (LSLAPP_QT_VER Qt)
50- endif ()
39+ if (BUILD_GUI)
40+ ## Qt
41+ set (CMAKE_AUTOMOC ON ) # The later version of this in LSLCMake is somehow not enough.
42+ set (CMAKE_AUTORCC ON )
43+ set (CMAKE_AUTOUIC ON )
44+ find_package (Qt6 COMPONENTS Core Widgets Network DBus)
45+ if (NOT Qt6_FOUND)
46+ # If we require 5.15 then we can use version-agnostic linking, but 5.15 not easily available on Ubuntu.
47+ find_package (Qt5 COMPONENTS Core Widgets Network DBus REQUIRED)
48+ add_executable (${PROJECT_NAME} MACOSX_BUNDLE )
49+ set (LSLAPP_QT_VER Qt5)
50+ else ()
51+ qt_add_executable(${PROJECT_NAME} MACOSX_BUNDLE MANUAL_FINALIZATION)
52+ set (LSLAPP_QT_VER Qt)
53+ endif ()
54+ endif (BUILD_GUI)
5155
5256## Threads
5357find_package (Threads REQUIRED)
@@ -57,33 +61,36 @@ find_package(Threads REQUIRED)
5761## xdfwriter - stand alone library
5862add_subdirectory (xdfwriter)
5963
60- target_sources (${PROJECT_NAME} PRIVATE
61- src/main.cpp
62- src/mainwindow.cpp
63- src/mainwindow.h
64- src/mainwindow.ui
65- src/recording.h
66- src/recording.cpp
67- src/tcpinterface.h
68- src/tcpinterface.cpp
69- )
64+ if (BUILD_GUI)
65+ target_sources (${PROJECT_NAME} PRIVATE
66+ src/main.cpp
67+ src/mainwindow.cpp
68+ src/mainwindow.h
69+ src/mainwindow.ui
70+ src/recording.h
71+ src/recording.cpp
72+ src/tcpinterface.h
73+ src/tcpinterface.cpp
74+ )
75+
76+ target_link_libraries (${PROJECT_NAME}
77+ PRIVATE
78+ xdfwriter
79+ ${LSLAPP_QT_VER} ::Widgets
80+ ${LSLAPP_QT_VER} ::Network
81+ ${LSLAPP_QT_VER} ::DBus
82+ Threads::Threads
83+ LSL::lsl
84+ )
85+ endif (BUILD_GUI)
86+
7087
7188add_executable (LabRecorderCLI MACOSX_BUNDLE
7289 src/clirecorder.cpp
7390 src/recording.h
7491 src/recording.cpp
7592)
7693
77- target_link_libraries (${PROJECT_NAME}
78- PRIVATE
79- xdfwriter
80- ${LSLAPP_QT_VER} ::Widgets
81- ${LSLAPP_QT_VER} ::Network
82- ${LSLAPP_QT_VER} ::DBus
83- Threads::Threads
84- LSL::lsl
85- )
86-
8794target_link_libraries (LabRecorderCLI
8895 PRIVATE
8996 xdfwriter
@@ -93,43 +100,69 @@ target_link_libraries(LabRecorderCLI
93100
94101installLSLApp(xdfwriter)
95102installLSLApp(testxdfwriter)
96- installLSLApp(${PROJECT_NAME} )
97103installLSLApp(LabRecorderCLI)
98- installLSLAuxFiles(${PROJECT_NAME}
99- ${PROJECT_NAME} .cfg
100- LICENSE
101- README.md
102- )
104+ if (BUILD_GUI)
105+ installLSLApp(${PROJECT_NAME} )
106+ installLSLAuxFiles(${PROJECT_NAME}
107+ ${PROJECT_NAME} .cfg
108+ LICENSE
109+ README.md
110+ )
111+ else ()
112+ installLSLAuxFiles(LabRecorderCLI
113+ ${PROJECT_NAME} .cfg
114+ LICENSE
115+ README.md
116+ )
117+ endif (BUILD_GUI)
118+
103119
104120if (WIN32 )
105- get_target_property (QT_QMAKE_EXECUTABLE Qt::qmake IMPORTED_LOCATION )
106- get_filename_component (QT_WINDEPLOYQT_EXECUTABLE ${QT_QMAKE_EXECUTABLE} PATH )
107- set (QT_WINDEPLOYQT_EXECUTABLE "${QT_WINDEPLOYQT_EXECUTABLE} /windeployqt.exe" )
121+ if (BUILD_GUI)
122+ get_target_property (QT_QMAKE_EXECUTABLE Qt::qmake IMPORTED_LOCATION )
123+ get_filename_component (QT_WINDEPLOYQT_EXECUTABLE ${QT_QMAKE_EXECUTABLE} PATH )
124+ set (QT_WINDEPLOYQT_EXECUTABLE "${QT_WINDEPLOYQT_EXECUTABLE} /windeployqt.exe" )
125+
126+ add_custom_command (
127+ TARGET ${PROJECT_NAME} POST_BUILD
128+ COMMAND ${QT_WINDEPLOYQT_EXECUTABLE}
129+ --no -translations --no -system -d3d-compiler
130+ --qmldir ${CMAKE_CURRENT_SOURCE_DIR}
131+ $<TARGET_FILE_DIR:${PROJECT_NAME} >)
132+
133+ add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
134+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
135+ $<TARGET_FILE:LSL::lsl>
136+ $<TARGET_FILE:xdfwriter>
137+ $<TARGET_FILE_DIR:${PROJECT_NAME} >)
138+ else ()
139+ add_custom_command (TARGET LabRecorderCLI POST_BUILD
140+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
141+ $<TARGET_FILE:LSL::lsl>
142+ $<TARGET_FILE:xdfwriter>
143+ $<TARGET_FILE_DIR:LabRecorderCLI>)
144+ endif (BUILD_GUI)
145+ endif ()
108146
147+ if (BUILD_GUI)
109148 add_custom_command (
110149 TARGET ${PROJECT_NAME} POST_BUILD
111- COMMAND ${QT_WINDEPLOYQT_EXECUTABLE}
112- --no -translations --no -system -d3d-compiler
113- --qmldir ${CMAKE_CURRENT_SOURCE_DIR}
114- $<TARGET_FILE_DIR:${PROJECT_NAME} >)
115- add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
116- COMMAND ${CMAKE_COMMAND} -E copy_if_different
117- $<TARGET_FILE:LSL::lsl>
118- $<TARGET_FILE:xdfwriter>
150+ COMMAND ${CMAKE_COMMAND} -E copy
151+ ${CMAKE_CURRENT_SOURCE_DIR} //${PROJECT_NAME} .cfg
119152 $<TARGET_FILE_DIR:${PROJECT_NAME} >)
120- endif ()
121-
122- add_custom_command (
123- TARGET ${PROJECT_NAME} POST_BUILD
124- COMMAND ${CMAKE_COMMAND} -E copy
125- ${CMAKE_CURRENT_SOURCE_DIR} // ${PROJECT_NAME} .cfg
126- $<TARGET_FILE_DIR: ${PROJECT_NAME} > )
153+ else ()
154+ add_custom_command (
155+ TARGET LabRecorderCLI POST_BUILD
156+ COMMAND ${CMAKE_COMMAND} -E copy
157+ ${CMAKE_CURRENT_SOURCE_DIR} // ${PROJECT_NAME} .cfg
158+ $<TARGET_FILE_DIR:LabRecorderCLI>)
159+ endif (BUILD_GUI )
127160
128- if (Qt6_FOUND)
161+ if (Qt6_FOUND AND BUILD_GUI )
129162 set_target_properties (${PROJECT_NAME} PROPERTIES
130163 QT_ANDROID_EXTRA_LIBS "${CMAKE_CURRENT_BINARY_DIR} /liblsl_bin/liblsl.so" )
131164 qt_finalize_executable(${PROJECT_NAME} )
132- endif ()
165+ endif (Qt6_FOUND AND BUILD_GUI )
133166
134167set (CPACK_DEBIAN_LABRECORDER_PACKAGE_SECTION "science" CACHE INTERNAL "" )
135168LSLGenerateCPackConfig()
@@ -155,4 +188,4 @@ if(APPLE AND NOT DEFINED ENV{GITHUB_ACTIONS})
155188 "
156189 )
157190 endif ()
158- endif (APPLE )
191+ endif (APPLE AND NOT DEFINED ENV{GITHUB_ACTIONS} )
0 commit comments