This page explains how MNE-CPP handles build setups, solves for exernal as well as internal dependencies, prepares resources, and does packaging.
All MNE-CPP libraries are built to the
mne-cpp/lib folder. All applications, test, and examples are built to the
On Windows and MacOS, dependency solving for libraries and executables is done in the executable’s corresponding
.pro file. Here, the
macdeployqt tools are used, which are officially developed and maintained by Qt. Two functions
defineReplace(winDeployArgs) are provided in the mne-cpp.pri file, which are used to deploy executables on Windows and MacOS. For Linux we use the unoffical linuxdeployqt tool which is executed in the release.yml workflow file.
Applications, tests, and examples, link against MNE-CPP libraries (internal dependencies). Dependencies between MNE-CPP libraries exist as well and can be seen in the libraries.pro file. The following table describes how we solve for internal dependencies:
|Linux||MNE-CPP libraries reside in |
|MacOS||MNE-CPP libraries are copied to the .app |
As of right now MNE-CPP depends on Qt and Eigen. Eigen, as a lightweight template library, is included in the MNE-CPP repository by default and does not need further dependency solving. For Qt dependencies we do the following:
Files which are needed by the applications, e.g., layout files, selection groups and so on, are considrered resources and reside in
mne-cpp/resources. Needed resources are copied from
mne-cpp/bin/resources. In case of .app images on MacOS, e.g., MNE Scan, the needed resources are copied from
|Please note: If you need to add new resources, please add them to the |
The above information only holds for dynamically linked builds of MNE-CPP. When building statically, no dependency solving is necessary. Please note that our CI excludes examples and tests from static release binaries, since they would consume too much space.