CMake is the most widely used C++ build system, so liblsl and most labstreaminglayer apps use it to build binaries for all major platforms.
Command Line Options¶
The basic options for the first run, i.e. to create a build folder and apply some settings are:
(optional, if not set the current working directory is used)
where the build files will be written
Set a CMake variable, e.g.
cmake -S . -B build -DLSL_UNITTESTS=1 -G Ninja.
Some often used CMake variables:
- CMAKE_INSTALL_PREFIX (default:
- CMAKE_BUILD_TYPE (default:
On the first run, a CMake Generator
can be specified via the
-G option to set the native build system.
The defaults are
Makefiles on Unix and a Visual Studio version on Windows.
Example: cmake -G "Visual Studio 16 2019"
Building a project¶
Once a build folder is populated successfully, the binaries can be built either
with the native build system (e.g.
msbuild …) or you can
let CMake figure out which build system is used and how to run it via
cmake --build path/to/build/folder --config Release -j --target install.
See Build a Project.
A target is either a binary to be
built (e.g. the
liblsl target builds
lsl.dll on Windows, the
LabRecorder target builds
LabRecorder.exe and so on), a command
to be run or an internal CMake target.
The most important CMake targets are:
cmake --build . --target clean removes all built binaries but keeps the CMake configuration.
CMake places built binary files as well as build sideproducts in a build folder that should be separate from the source directory. To copy only the needed files (and additional library files they depend on) to a folder you can share with colleagues or copy onto another PC, you need to ‘install’ them. This doesn’t mean ‘installing’ them in a traditional sense (i.e., with Windows installers or package managers on Linux / OS X, see package for that), but only copying them to a separate folder and fixing some hardcoded paths in the binaries.
CMake can create packages for installed targets, e.g. ZIP files, Windows installers or Debian / Ubuntu packages.
See the CPack manual for more information.