Skip to content

Commit e304657

Browse files
authored
Merge pull request #86 from Roedy13/install_cli_only
cmake option to skip GUI version
2 parents b8a99d2 + a5c1aa5 commit e304657

File tree

1 file changed

+94
-61
lines changed

1 file changed

+94
-61
lines changed

CMakeLists.txt

Lines changed: 94 additions & 61 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(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
)
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)
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
5357
find_package(Threads REQUIRED)
@@ -57,33 +61,36 @@ find_package(Threads REQUIRED)
5761
## xdfwriter - stand alone library
5862
add_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

7188
add_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-
8794
target_link_libraries(LabRecorderCLI
8895
PRIVATE
8996
xdfwriter
@@ -93,43 +100,69 @@ target_link_libraries(LabRecorderCLI
93100

94101
installLSLApp(xdfwriter)
95102
installLSLApp(testxdfwriter)
96-
installLSLApp(${PROJECT_NAME})
97103
installLSLApp(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

104120
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")
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

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

Comments
 (0)