forked from labstreaminglayer/App-LabRecorder
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
102 lines (84 loc) · 2.53 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
cmake_minimum_required(VERSION 3.5)
project(LabRecorder
LANGUAGES CXX
VERSION 1.12.0)
include(Findliblsl.cmake)
option(LABRECORDER_XDFZ "use Boost.Iostreams for XDFZ support" Off)
option(LABRECORDER_BOOST_TYPE_CONVERSIONS "Use boost for type conversions" Off)
# GENERAL CONFIG #
set(META_PROJECT_DESCRIPTION "Record LabStreamingLayer streams to XDF data file.")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED On)
find_package(Qt5 REQUIRED COMPONENTS Widgets)
find_package(Threads REQUIRED)
add_executable(${PROJECT_NAME} MACOSX_BUNDLE #WIN32
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
recording.h
recording.cpp
conversions.h
xdfwriter.h
xdfwriter.cpp
)
add_executable(LabRecorderCLI MACOSX_BUNDLE
clirecorder.cpp
recording.h
recording.cpp
xdfwriter.h
xdfwriter.cpp
)
add_executable(testxdfwriter
test_xdf_writer.cpp
xdfwriter.h
xdfwriter.cpp
)
target_link_libraries(${PROJECT_NAME}
PRIVATE
Qt5::Widgets
Threads::Threads
LSL::lsl
)
target_link_libraries(LabRecorderCLI
PRIVATE
Threads::Threads
LSL::lsl
)
# Test for floating point format and endianness
try_run(IS_LITTLE_ENDIAN IS_IEC559
${CMAKE_CURRENT_BINARY_DIR}
"${CMAKE_CURRENT_SOURCE_DIR}/test_iec559_and_little_endian.cpp"
CMAKE_FLAGS "-DCMAKE_CXX_STANDARD=14" "-DCMAKE_CXX_STANDARD_REQUIRED=On"
COMPILE_OUTPUT_VARIABLE IEC559_COMPILE)
message(STATUS "Little endian: ${IS_LITTLE_ENDIAN}")
message(STATUS "IEC559: ${IS_IEC559}")
if(NOT IS_IEC559)
message(WARNING "IEC559 test: ${IEC559_COMPILE}")
endif()
if(LABRECORDER_BOOST_TYPE_CONVERSIONS OR NOT IS_LITTLE_ENDIAN OR NOT IS_IEC559)
message(STATUS "Trying to use Boost for type conversions")
find_package(Boost REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE Boost::boost)
target_compile_definitions(${PROJECT_NAME} PRIVATE EXOTIC_ARCH_SUPPORT)
endif()
# Enable xdfz support if Boost::iostreams and Boost.zlib (Windows) or plain zlib (Unix) was found
if(LABRECORDER_XDFZ)
find_package(Boost REQUIRED COMPONENTS iostreams)
if(WIN32)
find_package(Boost REQUIRED COMPONENTS zlib)
target_link_libraries(${PROJECT_NAME} PRIVATE Boost::iostreams Boost::zlib)
else()
find_package(ZLIB REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE Boost::iostreams ${ZLIB_LIBRARIES})
endif()
message(STATUS "Found zlib, enabling support for xdfz files")
target_compile_definitions(${PROJECT_NAME} PRIVATE XDFZ_SUPPORT=1)
endif()
installLSLApp(${PROJECT_NAME})
installLSLApp(LabRecorderCLI)
installLSLApp(testxdfwriter)
installLSLAuxFiles(${PROJECT_NAME}
default_config.cfg
)
LSLGenerateCPackConfig()