Link Search Menu Expand Document

Deployment

This page explains how MNE-CPP handles deployment on Win, Linux and MacOS.

Build Rules

All MNE-CPP libraries are built to the mne-cpp/lib folder. All applications, test, and examples are built to the mne-cpp/bin folder.

Dependency Solving

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 use Qt specific deployment tools (windeployqt, linuxdeployqt, macdeployqt).

Windows

The WinDynamic workflow run in release.yml is configured to exclude examples as well as tests. Next to mne-cpp/lib the MNE-CPP libraries are also copied to the mne-cpp/bin folder. This is performed in the libraries’ .pro files.

Dependency solving for libraries and executables is done via the windeployqt tool, which is officially developed and maintained by Qt. Calling windeployqt is performed in the deploy_win.bat file. windeployqt is called on the MNE Scan .exe and the Disp3D .dll file. Disp3D is the most top level library and links against all needed Qt modules. MNE Scan links against all relevant Qt modules application wise. Subsequently, Qt and all needed system libraries reside in the mne-cpp/bin folder.

The no longer needed folder mne-cpp/bin/mne-cpp-test-datais deleted before packaging. The folder mne-cpp/bin is compressed to a .zip file and uploaded as release asset to the corresponding GitHub release.

Linux

The LinuxDynamic workflow run in release.yml is configured to exclude examples as well as tests. The RPATH is specified in the executable’s .pro file in order to link to the libraries in mne-cpp/lib.

Dependency solving for libraries and executables is done via the linuxdeployqt tool. Calling linuxdeployqt is performed in the deploy_linux file.

The no longer needed folder mne-cpp/bin/mne-cpp-test-datais deleted before packaging. The folders mne-cpp/bin, mne-cpp/lib, mne-cpp/plugins, mne-cpp/translations are compressed to a .tar.gz file and uploaded as release assets to the corresponding GitHub release.

MacOS

The MacOSDynamic workflow run in release.yml is configured to exclude examples as well as tests. All applications are build as .app bundles using the withAppBundles configuration flag.

Dependency solving for libraries and executables is done via the macdeployqt tool, which is officially developed and maintained by Qt. Calling macdeployqt is performed in the deploy_macos file. All MNE-CPP libraries are manually copied to the .app’s Contents/Frameworks folder. The resource and applications’ plugins folders are copied to the corresponding mne-cpp/bin/<app_name>.app/ folders.

The no longer needed folders mne-cpp/bin/mne-cpp-test-data, mne-cpp/bin/mne_scan_plugins, mne-cpp/bin/mne_analyze_plugins, mne-cpp/bin/mne_rt_server_plugins and mne-cpp/bin/resources are deleted before packaging. The folder mne-cpp/bin is compressed to a .tar.gz file and uploaded as release assets to the corresponding GitHub release.

Static Builds

The information above corresponds to deploying the dynamically build version of MNE-CPP. In case of static deployment the process differs a bit. See the deploy_win_static.bat , deploy_macos_static and deploy_linux_static files.