Skip to content

Commit 5e365f3

Browse files
committed
Altered CMakeLists.txt to allow for compiling the CLI only
1 parent b8a99d2 commit 5e365f3

1 file changed

Lines changed: 93 additions & 57 deletions

File tree

CMakeLists.txt

Lines changed: 93 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake" ${CMAKE_MODULE_PATH})
1313
set(CMAKE_CXX_STANDARD 17)
1414
set(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
)
3537
endif()
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()
4754
else()
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
5360
find_package(Threads REQUIRED)
@@ -57,33 +64,36 @@ find_package(Threads REQUIRED)
5764
## xdfwriter - stand alone library
5865
add_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

7191
add_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-
8797
target_link_libraries(LabRecorderCLI
8898
PRIVATE
8999
xdfwriter
@@ -93,43 +103,69 @@ target_link_libraries(LabRecorderCLI
93103

94104
installLSLApp(xdfwriter)
95105
installLSLApp(testxdfwriter)
96-
installLSLApp(${PROJECT_NAME})
97106
installLSLApp(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

104123
if (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)
120148
endif()
121149

150+
if (NOT CLI_ONLY)
122151
add_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

134170
set(CPACK_DEBIAN_LABRECORDER_PACKAGE_SECTION "science" CACHE INTERNAL "")
135171
LSLGenerateCPackConfig()
@@ -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

Comments
 (0)