labrecorder 1.0.0rc0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of labrecorder might be problematic. Click here for more details.

Files changed (45) hide show
  1. labrecorder-1.0.0rc0/.github/workflows/build.yml +287 -0
  2. labrecorder-1.0.0rc0/.gitignore +21 -0
  3. labrecorder-1.0.0rc0/.travis.yml +38 -0
  4. labrecorder-1.0.0rc0/BUILD.md +125 -0
  5. labrecorder-1.0.0rc0/CMakeLists.txt +390 -0
  6. labrecorder-1.0.0rc0/LICENSE +21 -0
  7. labrecorder-1.0.0rc0/LabRecorder.cfg +69 -0
  8. labrecorder-1.0.0rc0/LabRecorder_BIDS.cfg +2 -0
  9. labrecorder-1.0.0rc0/LabRecorder_Legacy.cfg +3 -0
  10. labrecorder-1.0.0rc0/PKG-INFO +193 -0
  11. labrecorder-1.0.0rc0/README.md +184 -0
  12. labrecorder-1.0.0rc0/app.entitlements +17 -0
  13. labrecorder-1.0.0rc0/cmake/MacOSXBundleInfo.plist.in +40 -0
  14. labrecorder-1.0.0rc0/doc/controls.png +0 -0
  15. labrecorder-1.0.0rc0/doc/labrecorder-default.png +0 -0
  16. labrecorder-1.0.0rc0/doc/labrecorder-running.png +0 -0
  17. labrecorder-1.0.0rc0/doc/labrecorder-study.png +0 -0
  18. labrecorder-1.0.0rc0/doc/templates.md +34 -0
  19. labrecorder-1.0.0rc0/pyproject.toml +19 -0
  20. labrecorder-1.0.0rc0/sample/.python-version +1 -0
  21. labrecorder-1.0.0rc0/sample/README.md +0 -0
  22. labrecorder-1.0.0rc0/sample/foo.xdf +0 -0
  23. labrecorder-1.0.0rc0/sample/main.py +29 -0
  24. labrecorder-1.0.0rc0/sample/out.xdf +0 -0
  25. labrecorder-1.0.0rc0/sample/pyproject.toml +12 -0
  26. labrecorder-1.0.0rc0/sample/uv.lock +314 -0
  27. labrecorder-1.0.0rc0/scripts/sign_and_notarize.sh +119 -0
  28. labrecorder-1.0.0rc0/src/clirecorder.cpp +39 -0
  29. labrecorder-1.0.0rc0/src/fptest.cpp +20 -0
  30. labrecorder-1.0.0rc0/src/main.cpp +16 -0
  31. labrecorder-1.0.0rc0/src/mainwindow.cpp +711 -0
  32. labrecorder-1.0.0rc0/src/mainwindow.h +90 -0
  33. labrecorder-1.0.0rc0/src/mainwindow.ui +370 -0
  34. labrecorder-1.0.0rc0/src/pyrecording.cpp +77 -0
  35. labrecorder-1.0.0rc0/src/recording.cpp +419 -0
  36. labrecorder-1.0.0rc0/src/recording.h +167 -0
  37. labrecorder-1.0.0rc0/src/tcpinterface.cpp +41 -0
  38. labrecorder-1.0.0rc0/src/tcpinterface.h +28 -0
  39. labrecorder-1.0.0rc0/uv.lock +8 -0
  40. labrecorder-1.0.0rc0/xdfwriter/CMakeLists.txt +63 -0
  41. labrecorder-1.0.0rc0/xdfwriter/conversions.h +141 -0
  42. labrecorder-1.0.0rc0/xdfwriter/test_iec559_and_little_endian.cpp +18 -0
  43. labrecorder-1.0.0rc0/xdfwriter/test_xdf_writer.cpp +61 -0
  44. labrecorder-1.0.0rc0/xdfwriter/xdfwriter.cpp +92 -0
  45. labrecorder-1.0.0rc0/xdfwriter/xdfwriter.h +158 -0
@@ -0,0 +1,287 @@
1
+ # =============================================================================
2
+ # LabRecorder Build Workflow
3
+ # =============================================================================
4
+ # This workflow builds, tests, and packages LabRecorder for all supported
5
+ # platforms.
6
+ #
7
+ # Features:
8
+ # - Multi-platform builds (Linux, macOS, Windows)
9
+ # - Qt6 integration
10
+ # - Automatic liblsl fetch via FetchContent
11
+ # - CPack packaging
12
+ # - macOS code signing and notarization (on release)
13
+ # =============================================================================
14
+
15
+ name: Build
16
+
17
+ on:
18
+ push:
19
+ branches: [main, master, dev]
20
+ tags: ['v*']
21
+ pull_request:
22
+ branches: [main, master]
23
+ release:
24
+ types: [published]
25
+ workflow_dispatch:
26
+
27
+ env:
28
+ BUILD_TYPE: Release
29
+
30
+ jobs:
31
+ # ===========================================================================
32
+ # Build Job - Multi-platform builds
33
+ # ===========================================================================
34
+ build:
35
+ name: ${{ matrix.config.name }}
36
+ runs-on: ${{ matrix.config.os }}
37
+ strategy:
38
+ fail-fast: false
39
+ matrix:
40
+ config:
41
+ - { name: "Ubuntu 22.04", os: ubuntu-22.04 }
42
+ - { name: "Ubuntu 24.04", os: ubuntu-24.04 }
43
+ - { name: "macOS", os: macos-14, cmake_extra: '-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"' }
44
+ - { name: "Windows", os: windows-latest }
45
+
46
+ steps:
47
+ - name: Checkout
48
+ uses: actions/checkout@v4
49
+
50
+ # -----------------------------------------------------------------------
51
+ # Install CMake 3.28+ (Ubuntu 22.04 ships with 3.22)
52
+ # -----------------------------------------------------------------------
53
+ - name: Install CMake
54
+ if: runner.os == 'Linux'
55
+ uses: lukka/get-cmake@latest
56
+
57
+ # -----------------------------------------------------------------------
58
+ # Install Qt6 (6.8 LTS across all platforms)
59
+ # -----------------------------------------------------------------------
60
+ - name: Install Linux dependencies
61
+ if: runner.os == 'Linux'
62
+ run: |
63
+ sudo apt-get update
64
+ sudo apt-get install -y libgl1-mesa-dev libxkbcommon-dev libxcb-cursor0
65
+
66
+ - name: Install Qt
67
+ uses: jurplel/install-qt-action@v4
68
+ with:
69
+ version: '6.8.*'
70
+ cache: true
71
+
72
+ # -----------------------------------------------------------------------
73
+ # Configure
74
+ # -----------------------------------------------------------------------
75
+ - name: Configure CMake
76
+ run: >
77
+ cmake -S . -B build
78
+ -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }}
79
+ -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install
80
+ -DLSL_FETCH_IF_MISSING=ON
81
+ ${{ matrix.config.cmake_extra }}
82
+
83
+ # -----------------------------------------------------------------------
84
+ # Build
85
+ # -----------------------------------------------------------------------
86
+ - name: Build
87
+ run: cmake --build build --config ${{ env.BUILD_TYPE }} --parallel
88
+
89
+ # -----------------------------------------------------------------------
90
+ # Install
91
+ # -----------------------------------------------------------------------
92
+ - name: Install
93
+ run: cmake --install build --config ${{ env.BUILD_TYPE }}
94
+
95
+ # -----------------------------------------------------------------------
96
+ # Test CLI
97
+ # -----------------------------------------------------------------------
98
+ - name: Test CLI (Linux)
99
+ if: runner.os == 'Linux'
100
+ run: ./install/bin/LabRecorderCLI --help || true
101
+
102
+ - name: Test CLI (macOS)
103
+ if: runner.os == 'macOS'
104
+ run: ./install/LabRecorderCLI --help || true
105
+
106
+ - name: Test CLI (Windows)
107
+ if: runner.os == 'Windows'
108
+ run: ./install/LabRecorderCLI.exe --help || true
109
+
110
+ # -----------------------------------------------------------------------
111
+ # Package
112
+ # -----------------------------------------------------------------------
113
+ - name: Package
114
+ run: cpack -C ${{ env.BUILD_TYPE }}
115
+ working-directory: build
116
+
117
+ # -----------------------------------------------------------------------
118
+ # Upload Artifacts
119
+ # -----------------------------------------------------------------------
120
+ - name: Upload Artifacts
121
+ uses: actions/upload-artifact@v4
122
+ with:
123
+ name: package-${{ matrix.config.os }}
124
+ path: |
125
+ build/*.zip
126
+ build/*.tar.gz
127
+ build/*.deb
128
+ if-no-files-found: ignore
129
+
130
+ # ===========================================================================
131
+ # macOS Signing and Notarization (Release only)
132
+ # ===========================================================================
133
+ sign-macos:
134
+ name: Sign & Notarize (macOS)
135
+ needs: build
136
+ if: github.event_name == 'release'
137
+ runs-on: macos-14
138
+
139
+ steps:
140
+ - name: Checkout
141
+ uses: actions/checkout@v4
142
+
143
+ - name: Download macOS Artifact
144
+ uses: actions/download-artifact@v4
145
+ with:
146
+ name: package-macos-14
147
+ path: packages
148
+
149
+ - name: Extract Package
150
+ run: |
151
+ cd packages
152
+ tar -xzf *.tar.gz
153
+ # Move contents out of versioned subdirectory to packages/
154
+ SUBDIR=$(ls -d LabRecorder-*/ | head -1)
155
+ mv "$SUBDIR"/* .
156
+ rmdir "$SUBDIR"
157
+ ls -la
158
+
159
+ # -----------------------------------------------------------------------
160
+ # Install Apple Certificates
161
+ # -----------------------------------------------------------------------
162
+ - name: Install Apple Certificates
163
+ env:
164
+ MACOS_CERTIFICATE: ${{ secrets.PROD_MACOS_CERTIFICATE }}
165
+ MACOS_CERTIFICATE_PWD: ${{ secrets.PROD_MACOS_CERTIFICATE_PWD }}
166
+ run: |
167
+ # Create temporary keychain
168
+ KEYCHAIN_PATH=$RUNNER_TEMP/build.keychain
169
+ MACOS_CI_KEYCHAIN_PWD=$(openssl rand -base64 32)
170
+ security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" $KEYCHAIN_PATH
171
+ security default-keychain -s $KEYCHAIN_PATH
172
+ security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
173
+ security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" $KEYCHAIN_PATH
174
+
175
+ # Import certificate
176
+ CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
177
+ echo -n "$MACOS_CERTIFICATE" | base64 --decode -o $CERTIFICATE_PATH
178
+ security import $CERTIFICATE_PATH -P "$MACOS_CERTIFICATE_PWD" -k $KEYCHAIN_PATH -A -t cert -f pkcs12
179
+ rm $CERTIFICATE_PATH
180
+
181
+ # Allow codesign to access keychain
182
+ security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_CI_KEYCHAIN_PWD" $KEYCHAIN_PATH
183
+ security list-keychain -d user -s $KEYCHAIN_PATH
184
+
185
+ # Extract identity name and export to environment
186
+ IDENTITY=$(security find-identity -v -p codesigning $KEYCHAIN_PATH | grep "Developer ID Application" | head -1 | awk -F'"' '{print $2}')
187
+ echo "APPLE_CODE_SIGN_IDENTITY_APP=$IDENTITY" >> $GITHUB_ENV
188
+
189
+ # -----------------------------------------------------------------------
190
+ # Setup Notarization Credentials
191
+ # -----------------------------------------------------------------------
192
+ - name: Setup Notarization
193
+ env:
194
+ NOTARIZATION_APPLE_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}
195
+ NOTARIZATION_PWD: ${{ secrets.PROD_MACOS_NOTARIZATION_PWD }}
196
+ NOTARIZATION_TEAM_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}
197
+ run: |
198
+ xcrun notarytool store-credentials "notarize-profile" \
199
+ --apple-id "$NOTARIZATION_APPLE_ID" \
200
+ --password "$NOTARIZATION_PWD" \
201
+ --team-id "$NOTARIZATION_TEAM_ID"
202
+ echo "APPLE_NOTARIZE_KEYCHAIN_PROFILE=notarize-profile" >> $GITHUB_ENV
203
+
204
+ # -----------------------------------------------------------------------
205
+ # Sign and Notarize
206
+ # -----------------------------------------------------------------------
207
+ - name: Sign and Notarize
208
+ env:
209
+ ENTITLEMENTS_FILE: ${{ github.workspace }}/app.entitlements
210
+ run: |
211
+ # Sign GUI app bundle (--deep handles all nested code including lsl.framework)
212
+ APP_PATH=$(find packages -name "*.app" -type d | head -1)
213
+ if [[ -n "$APP_PATH" ]]; then
214
+ ./scripts/sign_and_notarize.sh "$APP_PATH" --notarize
215
+ fi
216
+
217
+ # Sign CLI and its bundled lsl.framework
218
+ CLI_PATH=$(find packages -name "LabRecorderCLI" -type f | head -1)
219
+ if [[ -n "$CLI_PATH" ]]; then
220
+ CLI_DIR=$(dirname "$CLI_PATH")
221
+ # Sign framework first (dependency must be signed before dependent)
222
+ if [[ -d "$CLI_DIR/Frameworks/lsl.framework" ]]; then
223
+ codesign --force --sign "$APPLE_CODE_SIGN_IDENTITY_APP" --options runtime \
224
+ "$CLI_DIR/Frameworks/lsl.framework"
225
+ fi
226
+ ./scripts/sign_and_notarize.sh "$CLI_PATH" --notarize
227
+ fi
228
+
229
+ # -----------------------------------------------------------------------
230
+ # Repackage
231
+ # -----------------------------------------------------------------------
232
+ - name: Repackage
233
+ run: |
234
+ cd packages
235
+
236
+ # Debug: show what we have
237
+ echo "Contents of packages directory:"
238
+ ls -la
239
+
240
+ # Remove original unsigned package
241
+ rm -f *.tar.gz
242
+
243
+ # Get project version from CMakeLists.txt
244
+ VERSION=$(grep -A1 'project(LabRecorder' ../CMakeLists.txt | grep VERSION | sed 's/.*VERSION \([0-9.]*\).*/\1/')
245
+ echo "Detected version: $VERSION"
246
+
247
+ # Create signed package with CLI and its Frameworks (universal binary)
248
+ tar -cvzf "LabRecorder-${VERSION}-macOS_universal-signed.tar.gz" \
249
+ LabRecorder.app LabRecorderCLI Frameworks LabRecorder.cfg LICENSE README.md
250
+
251
+ echo "Created package:"
252
+ ls -la *.tar.gz
253
+
254
+ - name: Upload Signed Package
255
+ uses: actions/upload-artifact@v4
256
+ with:
257
+ name: package-macos-signed
258
+ path: packages/*-signed.tar.gz
259
+
260
+ - name: Upload to Release
261
+ if: github.event_name == 'release'
262
+ uses: softprops/action-gh-release@v2
263
+ with:
264
+ files: packages/*-signed.tar.gz
265
+
266
+ # ===========================================================================
267
+ # Upload unsigned packages to release
268
+ # ===========================================================================
269
+ release:
270
+ name: Upload to Release
271
+ needs: build
272
+ if: github.event_name == 'release'
273
+ runs-on: ubuntu-latest
274
+
275
+ steps:
276
+ - name: Download All Artifacts
277
+ uses: actions/download-artifact@v4
278
+ with:
279
+ path: artifacts
280
+
281
+ - name: Upload to Release
282
+ uses: softprops/action-gh-release@v2
283
+ with:
284
+ files: |
285
+ artifacts/**/*.zip
286
+ artifacts/package-ubuntu-*/*.tar.gz
287
+ artifacts/**/*.deb
@@ -0,0 +1,21 @@
1
+ *.ui.autosave
2
+ ui_*.h
3
+ /build*/
4
+ /package*/
5
+ /install*/
6
+ /CMakeLists.txt.user
7
+ /CMakeLists.json
8
+ /.vs/
9
+ /.vscode/
10
+ /out/
11
+ /CMakeSettings.json
12
+ # CLion
13
+ .idea/
14
+ cmake-build-debug/
15
+ cmake-build-release/
16
+ # Generated by CI scripts - or maintainers debugging CI scripts:
17
+ liblsl.deb
18
+ install-qt.sh
19
+ .DS_Store
20
+
21
+ /dist/
@@ -0,0 +1,38 @@
1
+ language: cpp
2
+ compiler: clang
3
+ env:
4
+ APP_VERSION="1.13.1"
5
+ matrix:
6
+ include:
7
+ - os: osx
8
+ osx_image: xcode10.1
9
+ before_install:
10
+ - mkdir LSL
11
+ - brew update
12
+ - brew upgrade cmake
13
+ install:
14
+ - git clone https://github.com/sccn/liblsl.git
15
+ - cmake -S liblsl -B liblsl/build -DCMAKE_INSTALL_PREFIX=$PWD/LSL/ -DLSL_UNIXFOLDERS=ON ..
16
+ - cmake --build liblsl/build --config Release --target install
17
+ before_script:
18
+ - brew install qt;
19
+ - export LSL_INSTALL_ROOT=LSL
20
+ script:
21
+ - cmake --version
22
+ - cmake -S . -B build -DLSL_INSTALL_ROOT=${LSL_INSTALL_ROOT} -DQt5_DIR=/usr/local/opt/qt/lib/cmake/Qt5
23
+ - cmake --build build --config Release --target install
24
+ - cd build/install/Labrecorder
25
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then for app in *.app; do /usr/local/opt/qt/bin/macdeployqt
26
+ ${app} -dmg; mv "${app%.app}.dmg" "${app%.app}-${APP_VERSION}-${TRAVIS_OSX_IMAGE}.dmg";
27
+ done; fi
28
+ deploy:
29
+ provider: releases
30
+ skip_cleanup: true
31
+ api_key:
32
+ secure: FQ+xqPuImk2ie4KeoDrP1u+6TB2qIoLPTk0wr7EEv+7oBfLodExVSyC67TEUVKUVnAYv2E1FFfHLZPUzMeiuFT6o40jkwekHEte3dbgWTgmW9iqiDw4eK5X0obZbDoYLJBbOiQfUsgH8nKpE/U5MprTpQ3KKQr2CjbcqGZnDY6k2yNope70bMe//4zBgv+qjvR1CDeI8sSrSUkBgDgVhujqNzS8I0FPoLAmJuBuFiA5Y7f/uwO17M1Nfso9WnNiWA8XhgJ1mgoA8BYrIx9hP2niK4gkFJ3p/iV0IK51KNxEELIQ7IKw/U12CLYD7+hKFBpyrZGcgCwXCHXR/G3/kNsxJrk395u+78gTLdiE3AuksWQZ+f+6br2pBG3UBTu/Qm3cVcVQRtNArKXDgiCaMc0qECL51o6qNTzPhLAHvGVGZCOjp34vW44MMWtKh584LqShojN/DH1OBUR3PjaHHiuxQMuaUXHto8SDfl0ZRSaeyElI+6kmU3XfTJfqFq2DpTX5LMYoiZUXwMKKQtWTGp8I2axL1LCnUsX/nlY63AoCY7CJTwX+DE1//YBwOsfafQ/VOMIpzQCXJNuHR3EAFVk+qcFt0wTVu/aa2oTkBaGN67LE22/pkwT4kxpI3kaXDo94CE0diEZWu4hHHNoQF1C/WuH/DH4HErJW8tPGrEm8=
33
+ file:
34
+ - LabRecorder-${APP_VERSION}-${TRAVIS_OSX_IMAGE}.dmg
35
+ - LabRecorderCLI-${APP_VERSION}-${TRAVIS_OSX_IMAGE}.dmg
36
+ on:
37
+ repo: labstreaminglayer/App-LabRecorder
38
+ tags: true
@@ -0,0 +1,125 @@
1
+ # Building Lab Recorder
2
+
3
+ This file includes quick start recipes. To see general principles, look [here](https://github.com/labstreaminglayer/labstreaminglayer/blob/master/doc/BUILD.md).
4
+
5
+
6
+ ## Windows - CMake - Visual Studio 2017
7
+
8
+ Starting with Visual Studio 2017, Microsoft began to support much closer integration with CMake. Generally, this uses the Visual Studio GUI as a wrapper around the CMake build files, so you should not expect to see most of the Visual Studio Project configuration options that you are familiar with, and CMake projects cannot be directly blended with non-CMake Visual Studio projects. There are also some weird gotchas, described below.
9
+
10
+ You will need to download and install:<BR/>
11
+ * [The full LabStreamingLayer meta project](https://github.com/labstreaminglayer/labstreaminglayer) -> Clone (include --recursive flag) or download
12
+ * [Visual Studio Community 2017](https://imagine.microsoft.com/en-us/Catalog/Product/530)
13
+ * [CMake 3.12.1](https://cmake.org/files/v3.12/)
14
+ * [Qt 5.11.1](https://download.qt.io/archive/qt/5.11/)
15
+ * [Boost 1.65.1](https://sourceforge.net/projects/boost/files/boost-binaries/1.65.1/boost_1_65_1-msvc-14.1-32.exe/download)
16
+
17
+
18
+ From Visual Studio:<BR/>
19
+ * File -> Open -> CMake -> labstreaminglayer/CMakeLists.txt
20
+ * Wait while CMake configures automatically and until CMake menu turns black
21
+ * Select x86-Release
22
+ * CMake menu -> Change CMake Settings -> LabStreamingLayer
23
+
24
+ Add the "variable" section to the x86-Release group, so that it looks approximately like this:
25
+ ```
26
+ {
27
+ "name": "x86-Release",
28
+ "generator": "Ninja",
29
+ "configurationType": "RelWithDebInfo",
30
+ "inheritEnvironments": [ "msvc_x86" ],
31
+ "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
32
+ "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
33
+ "cmakeCommandArgs": "",
34
+ "buildCommandArgs": "-v",
35
+ "ctestCommandArgs": "",
36
+ "variables": [
37
+ {
38
+ "name": "Qt5_DIR",
39
+ "value": "C:\\Qt\\5.11.1\\msvc2015\\lib\\cmake\\Qt5 "
40
+ },
41
+ {
42
+ "name": "BOOST_ROOT",
43
+ "value": "C:\\local\\boost_1_65_1"
44
+ },
45
+ {
46
+ "name": "LSLAPPS_LabRecorder",
47
+ "value": "ON"
48
+ }
49
+ ]
50
+ }
51
+ ```
52
+
53
+ * Also consider changing the build and install roots, as the default path is obscure. When you save this file, CMake should reconfigure, and show the output in the output window (including any CMake configuration errors).
54
+
55
+ * Note that it is not a typo that Qt refers to msvc2015 rather than msvc2017.
56
+
57
+ * Select Startup Item (green arrow dropdown) -> LabRecorder.exe (Install)
58
+
59
+ * Click the green arrow. The application should launch.
60
+
61
+ Note that if you change Qt versions, or other significant changes, it will be necessary to do a full rebuild before CMake correctly notices the change. CMake -> Clean All is not sufficient to force this.
62
+
63
+ Just deleting the build folder causes an unfortunate error (build folder not found) on rebuild. To do a full rebuild, it is necessary to change the build and install folder paths in CMake -> Change CMake Settings -> LabStreamingLayer, build, then delete the old folder, change the path back, and build again.
64
+
65
+
66
+ ## Windows - CMake - Legacy
67
+
68
+ This procedure also works in Visual Studio 2017, if desired. Generally, I'd recommend sticking with the newer procedure and Visual Studio 2017.
69
+
70
+ This procedure generates a Visual Studio type project from the CMake files, which can then be opened in Visual Studio.
71
+
72
+ You will need to download and install:<BR/>
73
+ * The full [LabStreamingLayer meta project](https://github.com/labstreaminglayer/labstreaminglayer) -> Clone (include --recursive flag) or download
74
+ * Desired Visual Studio Version (the example uses 2015).
75
+ * [CMake 3.12.1](https://cmake.org/files/v3.12/)
76
+ * [Qt 5.11.1](https://download.qt.io/archive/qt/5.11/)
77
+ * [Boost 1.65.1](https://sourceforge.net/projects/boost/files/boost-binaries/1.65.1/boost_1_65_1-msvc-14.1-32.exe/download)
78
+
79
+ From the command line, from the labstreaminglayer folder:
80
+ * labstreaminglayer\build>cmake .. -G "Visual Studio 14 2015" -DQt5_DIR="C:/Qt/5.11.1/msvc2015/lib/cmake/Qt5" -DBOOST_ROOT=C:\boost\boost_1_65_1 -DLSLAPPS_LabRecorder=ON
81
+
82
+ * labstreaminglayer\build>cmake --build . --config Release --target install
83
+
84
+ To see a list of possible generators, run the command with garbage in the -G option.
85
+
86
+ The executable is in labstreaminglayer\build\install\LabRecorder.
87
+
88
+ You can open the Visual Studio Project with labstreaminglayer\build\LabStreamingLayer.sln.
89
+
90
+ The command line install feature does not put build products in the sample place as when you build inside of Visual Studio. To get running to work inside of Visual Studio, it is necessary to copy the support files from labstreaminglayer\build\install\LabRecorder to labstreaminglayer\build\Apps\LabRecorder\Release. You must also right click LabRecorder -> Set as Startup Project and select Release and Win32.<BR/>
91
+
92
+ If any significant changes are made to the project (such as changing Qt or Visual Stuido version) it is recommended that you delete or rename the build folder and start over. Various partial cleaning processes do not work well.
93
+
94
+
95
+ ## Linux
96
+
97
+ * Ubuntu (/Debian)
98
+ * `sudo apt-get install build-essential cmake qt5-default libboost-all-dev`
99
+
100
+ 1. Open a Command Prompt / Terminal (Windows: MSVC Command Prompt) and change into this directory.
101
+ 1. Make a build subdirectory: `mkdir build && cd build`
102
+ 1. Call cmake
103
+ * `cmake ..`
104
+ * If your liblsl binaries are not in `../../LSL/liblsl/build/install`, add the path (`cmake -DLSL_INSTALL_ROOT=/path/to/liblsl/binaries ..`)
105
+ * Optional: Use a [generator](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators)
106
+ 1. You may need to specify additional cmake options.
107
+ . Build everything and copy the files to the `install` folder:
108
+ * `cmake --build . --target install`
109
+
110
+
111
+ ## OS X
112
+
113
+ * Use [homebrew](https://brew.sh/)
114
+ * `brew install cmake qt boost`
115
+
116
+ 1. Open a Command Prompt / Terminal (Windows: MSVC Command Prompt) and change into this directory.
117
+ 1. Make a build subdirectory: `mkdir build && cd build`
118
+ 1. Call cmake
119
+ * `cmake ..`
120
+ * If your liblsl binaries are not in `../../LSL/liblsl/build/install`, add the path (`cmake -DLSL_INSTALL_ROOT=/path/to/liblsl/binaries ..`)
121
+ * Optional: Use a [generator](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators)
122
+ 1. You may need to specify additional cmake options.
123
+ . Build everything and copy the files to the `install` folder:
124
+ * `cmake --build . --target install`
125
+