@@ -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 (CLI_ONLY "Only compile the CLI (no GUI)" OFF )
17+
1618# Dependencies
1719
1820## LSL
@@ -34,20 +36,25 @@ 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)
39+ if (NOT CLI_ONLY)
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 ()
4754else ()
48- qt_add_executable ( ${PROJECT_NAME} MACOSX_BUNDLE MANUAL_FINALIZATION )
49- set (LSLAPP_QT_VER Qt )
50- endif ()
55+ # Create a dummy target for LabRecorder
56+ # add_custom_target(${PROJECT_NAME} ALL COMMAND touch ${PROJECT_NAME} )
57+ endif (NOT CLI_ONLY )
5158
5259## Threads
5360find_package (Threads REQUIRED )
@@ -57,33 +64,36 @@ find_package(Threads REQUIRED)
5764## xdfwriter - stand alone library
5865add_subdirectory (xdfwriter )
5966
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- )
67+ if (NOT CLI_ONLY)
68+ target_sources (${PROJECT_NAME} PRIVATE
69+ src/main.cpp
70+ src/mainwindow.cpp
71+ src/mainwindow.h
72+ src/mainwindow.ui
73+ src/recording.h
74+ src/recording.cpp
75+ src/tcpinterface.h
76+ src/tcpinterface.cpp
77+ )
78+
79+ target_link_libraries (${PROJECT_NAME}
80+ PRIVATE
81+ xdfwriter
82+ ${LSLAPP_QT_VER} ::Widgets
83+ ${LSLAPP_QT_VER} ::Network
84+ ${LSLAPP_QT_VER} ::DBus
85+ Threads::Threads
86+ LSL::lsl
87+ )
88+ endif (NOT CLI_ONLY )
89+
7090
7191add_executable (LabRecorderCLI MACOSX_BUNDLE
7292 src/clirecorder.cpp
7393 src/recording.h
7494 src/recording.cpp
7595)
7696
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-
8797target_link_libraries (LabRecorderCLI
8898 PRIVATE
8999 xdfwriter
@@ -93,43 +103,69 @@ target_link_libraries(LabRecorderCLI
93103
94104installLSLApp (xdfwriter )
95105installLSLApp (testxdfwriter )
96- installLSLApp (${PROJECT_NAME} )
97106installLSLApp (LabRecorderCLI )
98- installLSLAuxFiles (${PROJECT_NAME}
99- ${PROJECT_NAME} .cfg
100- LICENSE
101- README.md
102- )
107+ if (NOT CLI_ONLY)
108+ installLSLApp (${PROJECT_NAME} )
109+ installLSLAuxFiles (${PROJECT_NAME}
110+ ${PROJECT_NAME} .cfg
111+ LICENSE
112+ README.md
113+ )
114+ else ()
115+ installLSLAuxFiles (LabRecorderCLI
116+ ${PROJECT_NAME} .cfg
117+ LICENSE
118+ README.md
119+ )
120+ endif (NOT CLI_ONLY )
121+
103122
104123if (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" )
108-
109- add_custom_command (
110- 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 >
119- $<TARGET_FILE_DIR :${PROJECT_NAME} >)
124+ if (NOT CLI_ONLY)
125+ get_target_property (QT_QMAKE_EXECUTABLE Qt::qmake IMPORTED_LOCATION )
126+ get_filename_component (QT_WINDEPLOYQT_EXECUTABLE ${QT_QMAKE_EXECUTABLE} PATH )
127+ set (QT_WINDEPLOYQT_EXECUTABLE "${QT_WINDEPLOYQT_EXECUTABLE} /windeployqt.exe" )
128+
129+ add_custom_command (
130+ TARGET ${PROJECT_NAME} POST_BUILD
131+ COMMAND ${QT_WINDEPLOYQT_EXECUTABLE}
132+ --no-translations --no-system-d3d-compiler
133+ --qmldir ${CMAKE_CURRENT_SOURCE_DIR}
134+ $<TARGET_FILE_DIR :${PROJECT_NAME} >)
135+
136+ add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
137+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
138+ $<TARGET_FILE :LSL ::lsl >
139+ $<TARGET_FILE :xdfwriter >
140+ $<TARGET_FILE_DIR :${PROJECT_NAME} >)
141+ else ()
142+ add_custom_command (TARGET LabRecorderCLI POST_BUILD
143+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
144+ $<TARGET_FILE :LSL ::lsl >
145+ $<TARGET_FILE :xdfwriter >
146+ $<TARGET_FILE_DIR :LabRecorderCLI >)
147+ endif (NOT CLI_ONLY )
120148endif ()
121149
150+ if (NOT CLI_ONLY)
122151add_custom_command (
123152 TARGET ${PROJECT_NAME} POST_BUILD
124153 COMMAND ${CMAKE_COMMAND} -E copy
125154 ${CMAKE_CURRENT_SOURCE_DIR} //${PROJECT_NAME}.cfg
126155 $<TARGET_FILE_DIR :${PROJECT_NAME} >)
156+ else ()
157+ add_custom_command (
158+ TARGET LabRecorderCLI POST_BUILD
159+ COMMAND ${CMAKE_COMMAND} -E copy
160+ ${CMAKE_CURRENT_SOURCE_DIR} //${PROJECT_NAME}.cfg
161+ $<TARGET_FILE_DIR :LabRecorderCLI >)
162+ endif (NOT CLI_ONLY )
127163
128- if (Qt6_FOUND)
164+ if (Qt6_FOUND AND NOT CLI_ONLY )
129165 set_target_properties (${PROJECT_NAME} PROPERTIES
130166 QT_ANDROID_EXTRA_LIBS "${CMAKE_CURRENT_BINARY_DIR} /liblsl_bin/liblsl.so" )
131167 qt_finalize_executable (${PROJECT_NAME} )
132- endif ()
168+ endif (Qt6_FOUND AND NOT CLI_ONLY )
133169
134170set (CPACK_DEBIAN_LABRECORDER_PACKAGE_SECTION "science" CACHE INTERNAL "" )
135171LSLGenerateCPackConfig ()
@@ -155,4 +191,4 @@ if(APPLE AND NOT DEFINED ENV{GITHUB_ACTIONS})
155191 "
156192 )
157193 endif ()
158- endif (APPLE )
194+ endif (APPLE AND NOT DEFINED ENV{GITHUB_ACTIONS} )
0 commit comments